我正在尝试连接到Cloud Waitress API(一种餐馆解决方案)
文档:https://apidocs.cloudwaitress.com/#orderpromos
该文档提供了有关如何连接到API的示例:
curl https://api.cloudwaitress.com/v1/orders \
-X POST \
-H "Content-Type: application/json" \
-H "Authorization: YOUR_API_KEY" \
-d `
{
"restaurant_id": "xxxxxxx",
"limit": 10,
"page": 1,
"sort": { "created": -1 },
}
`
我试图在GAS中创建一个脚本,以将信息返回到电子表格。
基于此问题:
How curl maps onto Google App Script URLFetchApp
我更改了我的代码,如下所示:
function getAuthHeader(){
var apiKey = "SOME-API-KEY";
var authHeader = Utilities.base64Encode(apiKey);
return {
headers: {Authorization: authHeader}
}
}
function GetOrders(){
var url = "https://api.cloudwaitress.com/v1/orders";
var data = {
"restaurant_id":"SOME-RESTAURANT-ID",
"limit": 10,
"page": 1,
"sort": { "created": 1 }
};
var result = goPost(url ,data);
}
function goPost(url,data){
var options = {
'method' : 'post',
'payload' : data,
'headers': getAuthHeader()['headers']
};
var response;
try{
response = JSON.parse(UrlFetchApp.fetch(url,options).getContentText());
}catch(err){
Logger.log(err);
}
return response;
}
现在我遇到的新错误是:
例外:对https://api.cloudwaitress.com的请求失败 代码401。服务器响应被截断:{“结果”:1,“消息”:“无效 身份验证”}(使用MutantHttpExceptions选项检查完整 响应)
自从我之前遇到500错误以来,我相信这是一个很大的进步。
我已经向cloudwaitress团队寻求帮助,但是我想知道是否还有其他可以尝试的方法。
感谢您的时间。
答案 0 :(得分:3)
该修改如何?
"Content-Type: application/json"
,并将JSON对象转换为字符串。-u testtoken123:
。这样,就需要使用Utilities.base64Encode
。但是在示例curl中,直接使用了API密钥。
当以上几点反映到您的脚本时,它如下所示。
var options = {
'method' : 'post',
'payload' : data,
'headers': getAuthHeader()['headers']
};
至:
var apiKey = "SOME-API-KEY";
var options = {
'method' : 'post',
'payload' : JSON.stringify(data),
'headers': {Authorization: apiKey},
'contentType': "application/json",
};
getAuthHeader()
。apiKey
和data
可以用于此API。请注意这一点。