Публикация в API через код zapier и получение этой ошибки - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь запустить публикацию JSON в API, с которым я работаю, используя Via Zapier Code.

Я определил свои входные данные, и это мой код ниже. Кажется, что большинство из них проходит без синтаксических ошибок. Но 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 голосов
/ 04 мая 2018

Я полагаю, что здесь происходит то, что ответ от 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);

Я написал аналогичный ответ здесь .

...