Javascript 如何将此cURL请求转换为UrlFetchApp?
所以网站给了我们一些代码示例。我已经设法把GET函数做得足够好了,但是我似乎不能发布任何东西。这是下面的示例Javascript 如何将此cURL请求转换为UrlFetchApp?,javascript,json,curl,google-apps-script,urlfetch,Javascript,Json,Curl,Google Apps Script,Urlfetch,所以网站给了我们一些代码示例。我已经设法把GET函数做得足够好了,但是我似乎不能发布任何东西。这是下面的示例 curl -X POST https://api.teachworks.com/v1/customers/family \ -H 'Content-Type: application/json' \ -H 'Authorization: Token token={access_token}' \ -d '{ "customer": {
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": "jakej@example.com",
"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": "jakej@example.com",\
"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);
}
每次运行时都会出现相同的错误:
请求返回的代码400失败。截断的服务器响应:缺少必需参数:customer
如果我理解正确,有效载荷等于-d。所以我的代码应该是正确的。请告诉我我做错了什么。@theMaster说得对,缺少ContentType 标头中的Accept是客户端的应收款mimeType。contentType用于UrlFetchApp选项,与标题的内容类型相同。内容类型是请求正文的mimeType。在您的情况下,需要使用contentType的application/json。顺便问一下,我可以问一下你是否可以确认你的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": "jakej@example.com",\
"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);
}
那些反斜杠在干什么?我从未在urlfetchappYou中使用过它们。您可能只想创建普通pojo,然后在普通对象上使用
JSON.stringify
,而不是尝试直接编写JSON字符串。另外,也可以尝试使用pojo。javascript中的反斜杠允许您进行换行。您没有在标题中的选项Accept
中设置contentType
,而是客户端的可接收mimeTypecontentType
用于UrlFetchApp选项,与标题的contentType
相同<代码>内容类型是请求正文的mimeType。在您的情况下,需要使用application/json
的contentType
。顺便问一下,我可以问你是否可以确认你的curl命令工作正常吗?谢谢你的信任,但请包括实际的答案。只有代码的答案对未来读者的价值较小。解释发生了什么变化以及原因。你可以用自己的话写下塔纳克的评论。看见