gpt4 book ai didi

node.js - ExpressJS next ('route' )打破了我的路线

转载 作者:太空宇宙 更新时间:2023-11-03 22:46:50 25 4
gpt4 key购买 nike

我正在测试以下代码行。

router.get('/testAPI', function(req, res, next){
console.log('middleware 1');
next();
}, function(req, res, next) {
console.log('middleware 2');
next();
}, function(req, res){
res.send({ SecretData: 'abc123' });
});

它按预期工作。但是,当尝试添加时:

console.log('middleware 1');
next('route');

在中间件 1 中,这样我就可以跳过中间件 2,但我在路由上收到 404 错误:无法 GET/api/testAPI

有人对为什么会发生这种情况有任何建议/想法吗?

事实上,我相信它重定向到我的“/”路由器而不是我的“/api”路由器,因为当我将默认路由添加到“/”路由器中时,我得到的是该路由而不是 404 错误。

最佳答案

documentation解释:

You can provide multiple callback functions that behave just like middleware, except these callbacks can invoke next('route') to bypass the remaining route callback(s)

换句话说,通过调用next('route'),您将告诉 Express 不要理会您为该路由传递的其余回调。

这与中间件回调和路由处理程序回调实际上是同一件事有关,Express 无法知道您传递的最后一个回调实际上是您想要调用的回调。

解决此问题的一种方法是将路由的中间件部分与路由的路由处理部分分开:

app.get('/testAPI', function(req, res, next) {
console.log('middleware 1');
next('route');
}, function(req, res, next) {
// skipped...
console.log('middleware 2');
next();
});

app.get('/testAPI', function(req, res) {
res.send({ SecretData: 'abc123' });
});

关于node.js - ExpressJS next ('route' )打破了我的路线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29969227/

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