错误和错误中间件
如果我们想限制对我们应用的访问,我们也可以为此编写中间件! 此示例仅授予你在 thrusdays 上的访问权限,但是现实世界的示例可以是例如用户身份验证。放置这个的好地方是在记录中间件之后但在发送任何内容之前。
app.use(function (req, res, next) {
if (new Date().getDay() !== 4) {
next('Access is only granted on thursdays')
} else {
next()
}
})
正如你在此示例中所看到的,发送错误就像为 next()
函数提供参数一样简单。
现在,如果我们在不同于星期四的任何一天访问该网站,我们将遇到 500 错误和字符串'Access is only granted on thursdays'
。
现在,这对我们的网站来说还不够好。我们宁愿在另一个中间件中向用户发送 HTML 消息:
app.use(function (err, req, res, next) {
res.end(`<h1>Error</h1><p>${err}</p>`)
})
这有点像 catch 块:错误中间件之前的中间件中的任何错误都将发送给前者。错误中间件由其 4 个参数标识。
你还可以使用错误中间件通过再次调用下一个方法从错误中恢复:
app.use(function (err, req, res, next) {
// Just joking, everybody is allowed access to the website!
next()
})