Express中间件是一种在HTTP请求和响应循环中执行特定任务的方法。这些任务可以包括处理身份验证、会话管理、数据解析和路由等。中间件函数可以访问请求对象(req)、响应对象(res)和一个next函数,用于将控制权传递给下一个中间件或路由处理程序。
Express中间件的调用流程如下:
当一个请求到达Express的服务器之后,可以连续调用多个中间件,从而对这次请求进行预处理。
中间件的顺序很重要,因为它们按照调用的顺序执行。第一个中间件首先执行,然后调用第二个中间件,依此类推,直到达到指定的路由处理程序。
中间件函数本质上是一个处理函数,它接受请求对象、响应对象和一个next函数作为参数。通过调用next函数,可以将控制权传递给下一个中间件或路由处理程序。
在中间件函数中,可以在请求对象或响应对象上添加自定义的属性或方法,供下游的中间件或路由使用。
Express中间件的分类包括应用级别的中间件、路由级别的中间件、错误级别的中间件、Express内置的中间件和第三方中间件。应用级别的中间件绑定到app实例上,路由级别的中间件绑定到router实例上。错误级别的中间件用于处理错误情况。Express内置的中间件包括body-parser、morgan、cors等,而第三方中间件则来自npm包管理器。
在使用Express中间件时,需要注意以下几点:
一定要在路由之前注册中间件。
客户端发送过来的请求可以连续调用多个中间件进行处理。
执行完中间件的业务代码之后,不要忘记调用next函数。
为了防止代码逻辑混乱,调用next函数后不要再写额外的代码。
连续调用多个中间件时,多个中间件之间共享req和res对象。