express中中间件的概念
当请求进来时,默认从第一个中间件开始匹配,如果中间件中调用了next则继续往后面的中间件进行匹配
不关心请求方法与请求路径
通过调用next方法进入下一个中间件
关注请求路径的中间件
严格匹配请求方法与请求路径的中间件
业务应用
同一个请求可以给req封装一些属性与方法,从而实现各种功能,这和body-parse 、session的实现思路是一样的
:warning:所以在配置app的时候,尽量让其他中间件在路由中间件之前配置好
针对不同的功能配置不同的中间件
https://expressjs.com/en/resources/middleware.html
配置404中间件
当请求不经过任何中间件,包括路由中间件的时候,就流向到了最后;因此可以在最后放置一个处理404的中间件;
其他中间件不能处理的请求,都交给404中间件来处理
配置错误处理中间件
记得在请求时加上next,方便使用return next(err)进入错误处理中间件
在配置路由的时候就传递一个next函数给路由,当请求出错是使用返回next(错误对象)
错误处理中间件多了一个err参数,并且是按照顺序定义的
进入错误中间件的时候给客户端发送对应的错误信息就可以了
:warning:当进行异步请求时,错误中间件需要响应200的状态码,客户端能收到错误信息,但是在ajax中得不到对应的错误信息,只有undefined
在设置好响应之后,不能出现next了,只有在出错的时候调用next函数,交给错误中间件进行处理
**Can't set headers after they are sent**
Last updated