var express = require('express');
var router = express.Router();
router.post("/", function(req, res, next) {
console.log('Yes1');
if(!req.body.username || !req.body.password){
console.log('Yes2');
return res.status(401).json(JSON.stringify({
error: 'Username or Password are not set'
}));
}else{
console.log('Yes3');
return res.status(200).json(JSON.stringify({
data: 'Okay'
}));
}
//error handler
router.use(function(err, req, res, next) {
res.status(500).json(JSON.stringify({
error: err
}));
});
module.exports = router;
从前端我发送用户名和密码。我期待接收错误200或401.由于某种原因我收到错误500这是默认的错误处理程序。我不确定它是怎么来的。在我的服务器控制台上正在打印Yes1和Yes2,为什么我没有收到错误401?
答案 0 :(得分:2)
我不知道您是否有更多代码,但您需要使用app.use('/', router)
安装路由器。
您还需要安装body-parser
middleware才能解析req.body
。
您的整个应用程序应如下所示:
// router.js
var express = require('express');
var router = express.Router();
router.post("/", function(req, res, next) {
console.log('Yes1');
console.log(req.body);
if(!req.body.username || !req.body.password){
console.log('Yes2');
return res.status(401).json(JSON.stringify({
error: 'Username or Password are not set'
}));
}else{
console.log('Yes3');
return res.status(200).json(JSON.stringify({
data: 'Okay'
}));
}
});
//error handler
router.use(function(err, req, res, next) {
res.status(500).json(JSON.stringify({
error: err
}));
});
module.exports = router;
// server.js
var express = require('express');
var bodyParser = require('body-parser');
var customRouter = require('./router.js');
var app = express();
app.use(bodyParser.json()); // for parsing application/json
app.use('/', customRouter);
app.listen(3000, function () {
console.log('Listening on port 3000...');
});
请参阅error handling和routing文档。
答案 1 :(得分:0)
您的中间件处理程序似乎正在触发,因为401是错误,您将状态重置为500.