Обработка Fetch запроса на сервере Node.js

295
19 августа 2017, 04:02

Проблема с обработкой fetch запроса. Имеется некая html страница и к ней прикручен скрипт. В скрипте с помощью fetch я считываю форму и отправляю по урле, которую на сервере ноды слушают и пытаюсь понять, что мне прислал клиент

Сделал заглушку, что бы проверить, как приходит ответ.

Внешний скрипт (который подключен к HTML странице, которую вызывает Node js)

fetch("/user",{
    method: "POST",
    body: "test",
    headers: {
        "Content-type": "text/plain"
    }
})
.then((res)=>{
    return res.text();
})

На сервере (Node.js + Express) ловлю ответ

app.post('/user', (req, res)=>{
    console.log(req.body);
}) 

И получаю udefined.

Может кто-то сталкивался с таким? или есть рабочий пример отправки-приема fetch на стороне node.js?

Answer 1

По-умолчанию, express не обрабатывает тело POST запросов. Вам нужно подключить модуль body-parser

$ npm i body-parser

Он имеет обработчики различных content-type тела запроса. Для обработки тестовых данных text/plain нужно подключить bodyParser.text

app.use(bodyParser.text())

Все обработчики, подключённые далее, будут корректно обрабатывать тело post запроса.

READ ALSO
Странные результаты метода .filter в javascript

Странные результаты метода .filter в javascript

Добрый вечерЭто снова я и мой цирк вопросов )) Есть два массива - массив объектов и просто массив чисел:

273
Код выше срабатывает после кода ниже

Код выше срабатывает после кода ниже

Проблема заключается в том что сначала выводятся 2 нижних алерта а потом верхний и я не могу понять как это вообще возможно

233
JS. Как удалить <aside data-sidebar></aside> оставив все что внутри?

JS. Как удалить <aside data-sidebar></aside> оставив все что внутри?

Есть часть кода html (фильтр товара), он размещен внутри

183
Отобразить только первые 5 блоков [дубликат]

Отобразить только первые 5 блоков [дубликат]

На данный вопрос уже ответили:

310