gpt4 book ai didi

node.js - 如何仅在丢失的路线上将 Express.js 设置为 404?

转载 作者:IT老高 更新时间:2023-10-28 21:55:20 27 4
gpt4 key购买 nike

目前,我的所有其他路线下方都有以下内容:

app.get('*', function(req, res){
console.log('404ing');
res.render('404');
});

根据日志,即使上面匹配了路由,它也会被触发。我怎样才能让它只在没有匹配的时候触发?

最佳答案

你只需要把它放在所有路线的末尾。

看看 Passing Route Control 的第二个例子:

var express = require('express')
, app = express.createServer();

var users = [{ name: 'tj' }];

app.all('/user/:id/:op?', function(req, res, next){
req.user = users[req.params.id];
if (req.user) {
next();
} else {
next(new Error('cannot find user ' + req.params.id));
}
});

app.get('/user/:id', function(req, res){
res.send('viewing ' + req.user.name);
});

app.get('/user/:id/edit', function(req, res){
res.send('editing ' + req.user.name);
});

app.put('/user/:id', function(req, res){
res.send('updating ' + req.user.name);
});

app.get('*', function(req, res){
res.send('what???', 404);
});

app.listen(3000);

您也可以什么都不做,因为所有不匹配的路由都会产生 404。然后您可以使用此代码显示正确的模板:

app.error(function(err, req, res, next){
if (err instanceof NotFound) {
res.render('404.jade');
} else {
next(err);
}
});

它记录在 Error Handling .

关于node.js - 如何仅在丢失的路线上将 Express.js 设置为 404?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11500204/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com