如何通过 expressjs 访问 req.body?

How to access req.body via expressjs?

获取 expressjs 请求时我无法访问正文

我的主要 server.js 文件

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

我的router.js文件

const express = require("express");
const articlesContr = require("./../controllers/articlesContr.js");
const router = express.Router();

router
  .get("/articles", articlesContr.handleGet)
  .post("/articles", articlesContr.handlePost)
  .put("/articles", articlesContr.handleUpdate)
  .delete("/articles", articlesContr.handleDelete);

adminPanelContr.js

const controller = {
    handleGet: (req, res) => {
        const query = req._parsedUrl.query;
        const parsedQuery = querystring.parse(query);
        // res.send(productsDb.getItem(parsedQuery));
        console.log(req)
        res.send(JSON.stringify(req.body))
    }
};

GET 请求没有 body 参数。通常 .get() 处理函数不会查找它们。

如果您对 GET 和其他(POST、PUT、PATCH、DELETE)请求使用相同的处理函数,则需要逻辑来避免在获取 GET 时查看 body。

当您发送带有 JSON body 的请求时,不要忘记通过包含 Content-Type: application/json HTTP [=35= 来告诉您的服务器它是 JSON ].这样你就可以确定 express 会调用它的 express.json 中间件来将 body 解析为 req.body object.

当您 .get() GET 时,您不会收到请求 body。那里一定有某种打油诗。

如果您使用 res.json(object) 而不是 res.send(JSON.stringify(object)) express 可以很好地将 HTTP 响应 header 设置为 JSON 的有用值。

而且,我相信您知道这一点:用自己的请求响应请求 body 有点奇怪。