我如何将此cURL请求转换为UrlFetchApp?

问题描述 投票:2回答:1

因此,该网站为我们提供了一些代码示例。我已经设法做好GET功能,但是似乎什么也没张贴。这是下面的示例

curl -X POST https://api.teachworks.com/v1/customers/family \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Token token={access_token}' \
  -d '{
        "customer": 
          {         
            "first_name": "Jake & Paula",       
            "last_name": "Jackson",
            "email": "[email protected]",
            "home_phone": "123-123-1234",
            "mobile_phone": "123-123-1234",
            "status": "Active"
           }
       }' 

这是我的代码

function test(){
  url = "https://api.teachworks.com/v1/customers/family";
  var token = {api_key};
  headers = {
      "Accept": "application/json",
      "Authorization": "Token token="+token
    };
  payload = '{ "customer": \
{"first_name": "Jake & Paula", \
"last_name": "Jackson", \
"email": "[email protected]",\
"home_phone": "123-123-1234", \
"mobile_phone": "123-123-1234", \
"status": "Active" }}';
  Logger.log(payload);
  options = {
    "headers" : headers,
    "method" : "post",
    "payload" : payload
  }
  Logger.log(options);
  response = UrlFetchApp.fetch(url,options);
  Logger.log(response);
}

每次运行它都会收到相同的错误:

https://api.teachworks.com的请求失败,返回了代码400。服务器响应被截断:缺少必需的参数:客户

如果我理解正确,则有效载荷等效于-d。所以我的代码应该是正确的。请让我知道我做错了。

javascript json curl google-apps-script urlfetch
1个回答
0
投票

@ theMaster缺少ContentType是正确的。

标头中接受的是客户端可接收的mimeType。 contentType用于UrlFetchApp,与标头的Content-Type相同。 Content-Type是请求正文的mimeType。在您的情况下,必须使用application / json的contentType。 Ref顺便说一句,我能否问您是否可以确认curl命令正常工作?来源评论@Tanaike

function test(){
  url = "https://api.teachworks.com/v1/customers/family";
  var token = {api_key};
  headers = {
      "Accept": "application/json",
      "Authorization": "Token token="+token
    };
  payload = '{ "customer": \
{"first_name": "Jake & Paula", \
"last_name": "Jackson", \
"email": "[email protected]",\
"home_phone": "123-123-1234", \
"mobile_phone": "123-123-1234", \
"status": "Active" }}';
  Logger.log(payload);
  options = {
    "headers" : headers,
    "method" : "post",
    "payload" : payload
    "contentType" = "application/json"
  }
  Logger.log(options);
  response = UrlFetchApp.fetch(url,options);
  Logger.log(response);
}
© www.soinside.com 2019 - 2024. All rights reserved.