通过zapier代码发布到API并收到此错误

时间:2018-05-02 17:39:52

标签: javascript arrays json javascript-objects zapier

我正在尝试将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);




1 个答案:

答案 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