При отправке запроса POST в бэкэнд API через fetch () тело имеет только ключ и не имеет значения - PullRequest
0 голосов
/ 24 декабря 2018

Когда я отправляю запрос POST на свой внутренний сервер экспресс-обслуживания, req.body содержит только ключевую часть, где все тело является ключом, а значение - пустым

Это выборка внешнего интерфейса.request

let data = {
  videoUrl: "dummy text"
}
fetch("/api/getinfo", {
  method:"POST",
  headers: {
    "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8"
  },
  body: JSON.stringify(data)
})

Вот так я обрабатываю его в бэкэнде ( NOTE : я использую body-parser)

app.post("/api/getinfo", (req,res) => {
    console.log(req.body);
}

Я ожидаю, что результат будет

'{ "videoUrl":"dummy text" }'

Но я получаю

{ '{"videoUrl":"dummy text"}': '' }

Все тело запроса является ключом, а значение пусто.

Что я делаю не так?

Ответы [ 3 ]

0 голосов
/ 24 декабря 2018

Вы используете неправильный тип контента для отправки json

Попробуйте

"Content-Type": "application/json;charset=UTF-8"
0 голосов
/ 24 декабря 2018

Я заметил проблему в вашем заголовке ;

fetch("/api/getinfo", {
  method:"POST",
  headers: {
    "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8" //this very line
  },

Полагаю, вы имели в виду

fetch("/api/getinfo", {
  method:"POST",
  headers: {
    'Content-type': 'application/json; charset=utf-8'
  },

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

Я предлагаю вам прочитать подробнее о Что означает «Тип контента: приложение»/ JSON;charset = utf-8 ”действительно значит?

0 голосов
/ 24 декабря 2018

Проблема в том, что вы строковые данные:

body: JSON.stringify(data)

должно быть

body: data

Это должно исправить это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...