如何通过 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 有点奇怪。
获取 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 有点奇怪。