我正在尝试将JSON帖子运行到我正在使用Via Zapier Code的API。
我已经定义了输入,这是我的代码。它似乎通过大部分没有任何语法错误。但是Zapier现在给我这个错误回复,我无法弄清楚为什么?
"我们在发送测试时遇到了麻烦。请再试一次。错误: 您必须返回单个对象或对象数组。"
有人对此有任何意见吗?
const API_URL = "https://myapi.com";
const DATA = {
siteId: "xxxx",
id: inputData.orderId,
totalATI: 39.99,
totalET: 39.99,
currency: "USD",
accountId: inputData.accountId,
ip: inputData.userIP,
recoverUrl: "",
civility: "",
lastname: inputData.lastname,
firstname: inputData.firstname,
email: inputData.accountId,
homePhoneNumber: "",
mobilePhoneNumber: "",
phoneNumber: inputData.userPhone,
countryCode: "01",
custom:{},
items: [{
id: "88",
label: "CR",
quantity: 1,
totalATI: 39.99,
totalET: 39.99,
url: "https://myurl.com",
imageUrl: "https://myimage.com",
universe: "",
category: ""
}]
};
fetch(API_URL, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-API-Key': 'xxx'
},
body: JSON.stringify(DATA)
}).then(function(res){
return res.json();
}).then(function(response){
// API response
if(response.success){
// Tell zapier success
callback(null, {
result: "success",
message: "Request successful!",
data: response
});
}
// Some error happened.
else {callback(response)};
}).catch(callback);

答案 0 :(得分:0)
我相信这里发生的事情是来自API的响应不是正确的JSON,这就是调用API的原因,但fetch
库无法解析响应。
例如,这段代码用于解析JSON响应。
fetch(API_URL, {
method: 'POST',
body: JSON.stringify(DATA),
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-API-Key': 'xxx'
}
})
.then(function(res) {
return res.json();
})
.then(function(body) {
console.log(body);
callback(null, body.json);
}).catch(callback);
当响应不是正确的JSON时,此代码将出错。
您可以尝试将代码更改为以下内容,您正在考虑将回复视为文本。
fetch(API_URL, {
method: 'POST',
body: JSON.stringify(DATA),
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-API-Key': 'xxx'
}
})
.then(function(res) {
return res.text();
})
.then(function(body) {
console.log(body);
var output = {rawHTML: body};
callback(null, output);
})
.catch(callback);
我发布了类似的答案here。