var express = require('express');
var path = require('path');
var app = express();
app.use(express.static(path.join(__dirname, 'public')));
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});

我抓到404错误时什么时候感到困惑? 我希望在输入正确的请求路径时不会捕获404错误来实现目标,否则错误的请求路径将会。
答案 0 :(得分:2)
在您的路线文件夹(如果您使用快递)或其他任何地方创建使用express.router()
的节点模块,如下所示
var express = require('express');
var bodyParser = require('body-parser');
var dishRouter = express.Router();
dishRouter.use(bodyParser.json());
然后处理您的请求,例如:
dishRouter.route('/')
.get(function(req, res, next) {
res.end('Will send all the dishes to you!');
})
.post(function(req, res, next) {
res.end('Will add the dish: ' + req.body.name + ' with details: ' + req.body.description);
});
并在你的app.js或你运行的主文件中使用它:
var express = require('express');
var path = require('path');
var dishRouter=require('./routes/dishRouter');
var app = express();
app.use(express.static(path.join(__dirname, 'public')));
app.use('/dishes',dishRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
res.redirect('/fail');
next(err);
});
那么这将会做的是,它将处理来自客户端的URI /dishes
的get和post请求,而对于其他人,它将抛出错误404并发送到/fail
路径。
答案 1 :(得分:1)
请记住,对于所有请求执行express use(),因此发生的情况是您的404状态附加到应用程序中的所有请求。在回调中使用它来检查输入是否正确,例如,如果它是HTTP express post请求:
// This is just an example, please note
app.post('/signin', function(req, res) {
if(!user.passwordCheck(req.body.password) {
res.status(404).send({
message: 'Incorrect input'
});
} else res.redirect('/success');
}
我希望这会有所帮助。