Express 应用中一切皆中间件,如果匹配到多个中间件会按照顺序依次调用 。此时 next() 函数就能派上用场了 , 他的作用是进入下一个中间件 。
比如代码中的 myLogger 中间件,将它挂载到路由之前,那么每次请求首先会打印出 “LOGGED”,然后再进入路由处理函数 。
如果 myLogger 中间件中没有调用 next() 函数,请求就会被堵在这里,无法进入路由处理函数,此时请求会被挂起 。
统一错误处理,提升健壮性既然一切皆中间件,那么错误处理也是一个中间件 。错误处理函数与其他的中间件函数稍有不同,它多了一个 err 参数,如下:
app.use((err, req, res, next) => {console.error(err.stack)res.status(500).send('服务器出错了!')})
err 参数表示错误信息,当发生错误时进入该中间件 , 此时要设置 HTTP 状态码为 500,并根据错误信息为客户端返回错误响应 。
错误处理中间件是一个兜底中间件,请确保它定义在所有中间件之后,是应用中的最后一个中间件 。
请求进入错误中间件,说明前面的所有中间件都没有匹配到 。但是如果客户端请求地址写错而进入错误处理中间件,此时返回 500 错误显然不合理,应该是 404 资源未找到 。
所以在错误处理中间件前 , 还应该定义一个 404 中间件 。该中间件要在所有路由之后,错误处理之前,是应用的倒数第二个中间件 , 代码如下:
app.use((req, res, next) => {res.status(404).send('Not Found')})
好了,现在我们的应用就健壮多了 。
总结本文列举了 Express 框架的核心,并举例如何应用 , 整体并没有那么难 。掌握这部分知识,可以快速拥 API 开发的思维 。
推荐阅读
- 《繁花》胡歌|男神矫正之旅,整牙堪比do脸
- 中国电视剧盛典,把游本昌的“江湖地位”体现得淋漓尽致
- 36集《仙剑六》空降鹅厂,全员颜值实力派,仙侠剧又有天花板
- 电视剧收视率排行榜,《繁花》跌至第三,第一收视率高达2.199%
- 该咋的才可以把图片导入cad
- 重庆垫江恺之峰门票 2023重庆垫江恺之峰旅游区赏花攻略
- 《热辣滚烫》花絮记录贾玲减肥历程,贾玲走心诠释英文片名含义
- 重庆清明看花 2023重庆清明节赏花节活动
- 赵丽颖不演,成本超1亿,预售仅69万,《花千骨》电影版问题在哪?
- 睡觉应该把手机放多远 手机辐射范围是几米