SendGrid с использованием NodeJS с Fetch — 400 неверных запросов

Я получаю 400 Bad Request от веб-API SendGrid, когда пытаюсь отправить следующий запрос в SendGrid через выборку с помощью NodeJS:

 var emailBody = {
 "personalizations":[
    {
       "to":[
          {
             "email":"[email protected]"
          }
       ]
    }
 ],
 "from":{
    "email": "[email protected]"
 },
 "subject": "Send Grid",
 "content": [
    {
       "type":"text/plain",
      "value": "Send Grid msg"
    }
 ]
};

var emailOptions = {
method: 'POST',
headers: {
  'Authorization': 'Bearer ' + [API_Key],
  'content-type': 'application/json'
},
body: emailBody
 };
fetch(sendGridUrl, emailOptions)

Запрос работает в Postman, используя ту же полезную нагрузку.


person daveGeo    schedule 10.08.2017    source источник
comment
Что-нибудь еще, что они присылают в своем ответе, что может помочь? Обычно Bad Request отправляется, если запрос составлен неправильно. Возможно, вы захотите дважды проверить, передается ли точно такой же запрос от Postman.   -  person Chnoch    schedule 10.08.2017
comment
Вот что я получаю от ошибок res.json: [{сообщение: неверный запрос, поле: null, справка: null}]   -  person daveGeo    schedule 10.08.2017


Ответы (1)


Пример из документации node-fetch указывает на то, что вам нужно использовать JSON.stringify() в body.

Цитировать:

var body = { a: 1 };
fetch('http://httpbin.org/post', { 
    method: 'POST',
    body:    JSON.stringify(body),
    headers: { 'Content-Type': 'application/json' },
})
    .then(res => res.json())
    .then(json => console.log(json));

От: https://github.com/bitinn/node-fetch#usage

person Sebastian-Laurenţiu Plesciuc    schedule 14.08.2017
comment
Да, это была проблема. Я думал, что об этом автоматически позаботятся? При использовании mailGun; нет необходимости в stringify. - person daveGeo; 16.08.2017