【发布时间】:2020-10-20 00:56:45
【问题描述】:
当我把 app.use(bodyParser.json()); 下面 app.use('/api', require('./routes/api')) req.body 返回未定义。但是如果我把 app.use(bodyParser.json()); 以上 app.use('/api', require('./routes/api'));它正确返回。那么问题是为什么?
这是我的代码: index.js 文件
const express = require('express');
const app = express();
const bodyParser= require('body-parser');
app.use(bodyParser.json());
app.use('/api', require('./routes/api'));
app.listen(process.env.port || 3000, function(){
console.log('You are listening to port 3000');
});
api.js 文件
const express= require('express');
const router= express.Router();
router.get('/ninjas', function(req, res){
res.send({type: 'GET'});
});
router.post('/ninjas', function(req, res){
console.log(req.body);
res.send({type: 'POST'});
});
router.put('/ninjas/:id', function(req, res){
res.send({type: 'PUT'});
});
router.delete('/ninjas/:id', function(req, res){
res.send({type: 'DELETE'});
});
module.exports =router;
提前致谢!
【问题讨论】:
-
Express 会记住设置中间件(主体解析器、路由器等)的顺序,并以相同的顺序通过它们运行请求。路由及其处理程序不会自动优先处理最后一个。