Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Пустой req.body с подключенным bodyParser (https://javascript.ru/forum/node-js-io-js/83784-pustojj-req-body-s-podklyuchennym-bodyparser.html)

Raadsert 11.03.2022 21:07

Пустой req.body с подключенным bodyParser
 
Здравствуйте.
У меня возникла проблема когда в req.body не передаётся информация (он банально пустой), при учёте что bodyParser подключен и активен.

Код клиента:
formLogin.onsubmit = async function(e) {
  e.preventDefault();

  const data = {
    name: "foo",
    surname:"boo"
  }

  const options = {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(data)
  }

  await fetch('/post', options).then((e)=>{
    alert(JSON.stringify(e));
  })
}

Код сервера:
const express = require('express');
const bodyParser = require('body-parser');

const app = express();

app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());

app.post(/post, (req, res)=>{
 res.json(req.body);
})


Подскажите, в чём может быть проблема?

Nexus 12.03.2022 03:55

Посмотрите, какие типы данных поддерживает опция init.body (тут learn.javascript.ru или тут MDN) и что вы туда передаете.

Цитата:

Сообщение от developer.mozilla.org/en-US/docs/Web/API/fetch
Any body that you want to add to your request: this can be a Blob, BufferSource, FormData, URLSearchParams, USVString, or ReadableStream object.


ksa 12.03.2022 10:37

Цитата:

Сообщение от Raadsert
body: data

Пробуй так
body: JSON.stringify(data)

Raadsert 12.03.2022 14:51

Цитата:

Сообщение от Nexus (Сообщение 544147)
Посмотрите, какие типы данных поддерживает опция init.body (тут learn.javascript.ru или тут MDN) и что вы туда передаете.

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

voraa 12.03.2022 14:53

Тоже самое и с ответом

.then((e)=>{
    alert(JSON.stringify(e));
  })


e - это объект Response. Что бы получить из него данные, нужно использовать соответствующие методы:
e.text()
e.json()
e.blob()

https://developer.mozilla.org/ru/docs/Web/API/Response

Raadsert 12.03.2022 15:32

Цитата:

Сообщение от voraa (Сообщение 544154)
Тоже самое и с ответом

.then((e)=>{
    alert(JSON.stringify(e));
  })


e - это объект Response. Что бы получить из него данные, нужно использовать соответствующие методы:
e.text()
e.json()
e.blob()

https://developer.mozilla.org/ru/docs/Web/API/Response

Понял, я тупой. На всякий случай, может кому потом пригодиться и кто-то так же как я тупить будет... Вот так будет работать:

const res = await fetch('/post', options)
alert(await res.text())


Часовой пояс GMT +3, время: 08:06.