在不接受请求正文的情况下以快递方式发布请求

时间:2021-03-07 17:58:10

标签: node.js reactjs express

我想尽一切办法在 POST 方法中获取我的请求正文。我在原始和表单数据模式下使用邮递员。尝试从 react 调用此 API 没有任何效果。 console.log(req.body) 打印空白。 {} 请让我知道我缺少什么。

const express = require('express');
const app = express();
const bodyParser = require("body-parser");
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

const port = 9000
const enableWs = require('express-ws');

app.get('/', (req, res) => {
    res.send('Hello World!')
})

app.post('/', (req, res) => {
    console.log(req.body);
    res.send('Hello World!')
});

app.listen(port, () => {
    console.log(`Example app listening at http://localhost:${port}`)
});

2 个答案:

答案 0 :(得分:0)

现在,我重新创建了您的应用,它确实有效。

我正在使用 insomnia 来测试您的 api。 使用 Post 和一些 JSON 到路由“/”。 然后在 Console.log 中我得到请求正文。

Insomnia API test to POST

控制台.log

console.log for api

也许您的测试不正确?如果有任何问题,请回复我。

我的猜测是你没有在你的 POST 请求中传递任何东西,因此是空的正文。

答案 1 :(得分:0)

请务必在邮递员的请求标头中将 Content-Type 指定为 application/json

为了让 body-parser 从 JSON 解析 req.body,您的请求必须指定内容实际上是 JSON。否则,它不会解析它;导致您的空白 req.body

fetch('http://localhost:9000', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
    },
    body: JSON.stringify({
        message: 'hi',
    }),
})