我有下一个
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 中获取
req.body
,我会得到 undefined
,如果我传递任何 json 而不是 req.body,它将正常工作。
另外,如果我将
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;
它也能正常工作。我没看到什么?
Slebetman在评论中给出了答案。
因此,由于
app.use()
的内容是中间件,因此它们取决于它的处理顺序。因此我应该在路由中间件上方放置带有 bodyParser
的行。