使用Express获取空的主体

问题描述 投票:0回答:1

我当前正在使用express来处理POST请求,但是当我使用node-fetch进行POST时,我会发送一个正文,然后我console.log()在express中收到的正文(服务器代码)。我得到一个空物体。不知道为什么会这样,我将在下面包含我的代码。

服务器代码

const express = require('express');
const bodyParser = require("body-parser");

const app = express();
app.use(bodyParser.urlencoded({ extended: true }));

// GET method route
app.get('/api/getHeartCount', function (req, res) {
    res.send('GET request')
});

  // POST method route
app.post('/api/sendHeart', function (req, res) {
    res.sendStatus(200);
    let fBody = JSON.stringify(req.body);
    console.log("Got body: " + fBody); // When this is run, I get this in the console: Got body: {}
});

app.listen(3000);

POST请求代码

const fetch = require("node-fetch");

(async () => {
    const body = { heartCount: 1 };

    const response = await fetch('http://localhost:3000/api/sendHeart', {
        method: "post",
        body: JSON.stringify(body)
    });
    const res = await response.text();

    console.log(res);
})();
javascript node.js express post
1个回答
0
投票

您使用了错误的bodyParser

您必须像这样使用bodyParser.json()中间件,以便能够在req.body处访问主体

app.use(bodyParser.json())

bodyParser.json([options]) 返回仅解析json并且仅查看Content-Type标头与type选项匹配的请求的中间件。该解析器接受主体的任何Unicode编码,并支持gzip和deflate编码的自动填充。

在中间件(即req.body)之后,在请求对象上填充了包含已解析数据的新主体对象。

来自:https://www.npmjs.com/package/body-parser#bodyparserjsonoptions

© www.soinside.com 2019 - 2024. All rights reserved.