提问人:Enesan 提问时间:11/9/2023 更新时间:11/9/2023 访问量:29
使用 router.post() 时 req.body 未定义,但使用 app.post() 时可见
req.body is undefined when use router.post() but visible when use app.post()
问:
我有下一个:app.js
const express = require('express');
const bodyParser = require('body-parser');
const authRoutes = require('./routes/auth');
const app = express();
app.use(`$/api/auth`, authRoutes)
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended: true}))
module.exports = app;
和:routes/auth.js
const express = require("express");
const router = express.Router();
router.post("/register", (req, res) =>{
res.status(200).json(req.body);
})
因此,如果我尝试接受 auth.js,我会得到 ,如果我传递任何 json 而不是 req.body,它将正常工作。req.body
undefined
另外,如果我移动到 ,它将看起来像这样:post
app.js
const express = require('express');
const bodyParser = require('body-parser');
const authRoutes = require('./routes/auth');
const app = express();
// app.use(`$/api/auth`, authRoutes)
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended: true}))
app.post("/api/auth/register", (req, res) =>{
res.status(200).json(req.body)
})
module.exports = app;
它也可以正常工作。我没有看到什么?
答:
0赞
Enesan
11/9/2023
#1
斯莱贝特曼在评论中给出了答案。
因此,由于 是中间件,它们取决于它处置的顺序。因此,我应该使用上述路由中间件放置行。app.use()
bodyParser
评论
app.use('$/api/auth', bodyParser.json(), bodyParser.urlencoded({extended: true}), authRoutes)
next()
/hello/world
/hello/:message
/hello/world
/hello/world
/hello/:message
world
req.params.message