Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – node express:你应该总是在get或post处理程序中调用next()吗?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
到目前为止,我已经使用(req,res)作为参数定义了我的get和post处理程序,假设我将这些处理程序放在中间件链中,并确保我在内部处理任何响应和错误处理这些处理程序……因此我没有提及下一个并不重要.

这是一种有效且明智的方法,或者即使(目前)之后没有任何事情发生,也总是呼叫next()是好的做法吗?例如,也许在未来你可能想要在这些路线之后做一些处理……或者可能有一个原因我还没有遇到为什么总是调用next()是一个好习惯.

例如,快递routing guide中有以下简单示例:

app.get('/example/b',function (req,res,next) {
    console.log('the response will be sent by the next function ...')
    next()
},res) {
    res.send('Hello from B!')
})

当然,我很欣赏这是一个非常简单的例子来说明处理程序可以链接,并不打算为get处理程序提供完整的框架,但是即使在第二个处理程序中定义和使用Next也会更好,如下?

app.get('/example/b',next) {
    res.send('Hello from B!')
    next()
})

或者,实际上通常的做法是假设将响应发送回客户端的处理函数不应该调用next()…即,假设链应该在实际发送响应的处理程序处结束?

或者在这一点上没有既定的做法?

我甚至想知道在get处理程序中发送任何响应是否常见但是将其推迟到后面的专用响应处理程序…我的意思是OK响应处理程序而不是错误响应处理程序(为此通常的做法是定义一个final error handler调用next(err)).因此,在非错误情况下,您将调用next(),在下面的中间件中,您将执行res.status(200).send(req.mydata),其中req.mydata将添加到您的get处理程序中.

@H_696_25@@L_696_20@
不.如果您想要其他东西来处理请求,您应该只调用next().通常它就像是说你的路线可能与那个请求相匹配,但你想表现得像它没有那样.例如,您可能有两个处理程序用于相同的路径:

app.get('/test',(req,next) => {
  if (something) {
    return next();
  }
  // handle request one way (1)
});

app.get('/test',res) => {
  // handle request other way (2)
});

始终调用一个匹配的处理程序,因此对于GET /测试请求,将调用一个处理程序,但它可以选择将控件传递给第二个处理程序,就好像第一个处理程序与请求不匹配一样.

请注意,如果第二个处理程序不打算将请求传递给下一个处理程序,则它的参数中甚至没有next.

如果没有第二个处理程序,那么如果第一个调用next(),则将使用标准404处理程序.

如果将参数传递给next(),则将调用错误处理中间件.

大佬总结

以上是大佬教程为你收集整理的node.js – node express:你应该总是在get或post处理程序中调用next()吗?全部内容,希望文章能够帮你解决node.js – node express:你应该总是在get或post处理程序中调用next()吗?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。