我有一个Express应用程序,我正在使用中间件在我的路由处理程序之后设置响应的格式。因此,在将数据添加到res
对象后,我的所有路由都会调用next()
来调用格式化程序。表达式4:中间件分支
我想从逻辑上处理404s。但是,我无法轻松使用应用程序中间件,因为我的所有路由处理程序都会调用next()
;创建一个catchall路线(app.use('*', 404function...)
)意味着一切都变成了404错误,甚至是正确的路线。
有没有办法判断路由器是否与处理程序中的任何内容不匹配?或者,有没有办法让路由专门调用错误中间件(一个4的函数)?
404处理程序将需要去你的格式化程序,或成为它的一部分。 –
@KevinB我希望它不必成为它的一部分。基本上,它是一个成功处理程序,它以[JSend](http://labs.omniti.com/labs/jsend)格式格式化我的json,除非实际发生错误,否则返回200状态。这就是'next()'调用的内容。在Patrick Murphy的回答中,如果路线不匹配,我可以让404只能通过,而不是一个处理程序覆盖另一个处理程序。 –
他的回答基本上是我的建议,只是在相反的方向。也许我只是不够清楚。基本上,如果你的格式化程序有数据格式化和返回,它会,如果没有,它调用next()。然后你的404和错误处理程序抓住它。 –