到目前为止我已经定义了我的get
and post
处理程序仅(req, res)
作为参数,假设我将这些处理程序放在中间件链的最后,并确保我在这些处理程序中正确处理任何响应和错误处理......因此,我不做任何处理并不重要参考next
.
这是一种有效且明智的方法,还是始终致电的良好做法next()
即使(目前)之后什么也没有发生?例如,也许将来您可能想要在这些路线之后进行一些处理...或者也许有一个我还没有遇到的原因,为什么总是打电话是一个好习惯next()
.
例如,快递中有如下简单的例子路线指南 https://expressjs.com/en/guide/routing.html:
app.get('/example/b', function (req, res, next) {
console.log('the response will be sent by the next function ...')
next()
}, function (req, res) {
res.send('Hello from B!')
})
当然,我很欣赏这是一个非常简单的示例来说明处理程序可以链接,并不是为了提供一个完整的框架get
处理程序,但定义和使用会更好吗next
即使在第二个处理程序中,如下所示?
app.get('/example/b', function (req, res, next) {
console.log('the response will be sent by the next function ...')
next()
}, function (req, res, next) {
res.send('Hello from B!')
next()
})
或者实际上常见的做法是假设将响应发送回客户端的处理程序函数应该not call next()
...即假设应该是链将在实际发送响应的处理程序处结束?
或者在这一点上没有既定的惯例?
我什至想知道不发送任何回复是否很常见get
处理程序,但将其推迟到之后的专用响应处理程序......我的意思是OK
响应处理程序而不是错误响应处理程序(为此定义一个错误响应处理程序似乎是常见的做法最终错误处理程序 https://expressjs.com/en/guide/error-handling.html并打电话next(err)
)。因此,在没有错误的情况下,您可以调用next()
在下面的中间件中你会做你的res.status(200).send(req.mydata)
where req.mydata
添加到您的get
处理程序。