Запрос NodeJS не кодирует всю форму - PullRequest
0 голосов
/ 05 сентября 2018

Задача довольно проста, я запрашиваю конечную точку с запросом POST (https://banana.com/endpoint/swap.php), даю ей мою форму: { banana: ["China's Red", "Sweden's Gray"], apples: [] } и отправляю ее. Однако модуль Request для NodeJS, который я использую, не кодирует пустой массив (в данном случае «яблок»), и если конечная точка не получает массив «яблок», она возвращает ошибку - «Неверный JSON». Я попытался сделать это с уже закодированными строками, и это работает просто отлично. Я также не могу структурировать свой json и затем использовать encodeURI(), так как он будет давать вокруг них кавычки «бананы» и «яблоки», которые будут закодированы - само собой разумеется, конечной точке это тоже не нравится.

Я был бы очень признателен, если бы кто-нибудь хотя бы указал мне правильное направление. Поскольку я не уверен, как поступить с этим, не создавая ужасного кода для спагетти.

1 Ответ

0 голосов
/ 06 сентября 2018
data = { banana: ["China's Red", "Sweden's Gray"], apples: [] }   
result = JSON.parse(JSON.stringify(data))  .

Вы не получите двойного банана и яблока, и если вам нужен доступ, то получите к нему доступ

console.log(result.banana)
console.log(result.apple)

Так что, если вам нужно скормить этот результат в пост-запросе -

url = 'your url';
const options = {
  url: url,
  method: 'POST',
  headers: {
    Accept: 'application/json',
    'Accept-Charset': 'utf-8'
  },
  json: result
};
request.post(options, function (err, response, body) {
// do something with your data
})

Дайте мне знать, если это работает.

...