Vapor 大型教程
中间件
中间件夹在「客户端请求」和「服务端响应」中间,能在请求到达路由前、响应返回浏览器前做各种处理。本文先认识 Vapor 的几个内置中间件。
一、什么是中间件
中间件位于客户端请求与服务端响应之间,可以完成一些诸如:请求日志记录、捕获错误并展示相关信息、限制访问量等功能。
在 Vapor 中使用最频繁的就是 ErrorMiddleware 了,它能够把同步和异步的请求错误转换成 HTTP 响应。意外的错误会使服务器立即断开与客户端的连接并打印出内部错误日志;使用了 ErrorMiddleware 可以确保抛出的所有错误都被转换成合适的 HTTP 响应。
生产环境注意:在生产环境下,
ErrorMiddleware 会把所有的错误都转换成 500(服务器内部错误)响应,这在一定程度上也保证了应用的安全——因为错误信息中往往包含数据库结构、文件路径等敏感信息,做了这层转换就可以保护这些敏感信息不被泄露出去。FileMiddleware 是另外一个中间件,它会对 Public 目录下的文件进行文件服务,在写前端页面时可以提供对 js、css、html 等静态文件的服务。
SessionMiddleware 会话中间件用来跟踪客户端连接的整个会话过程。
对于大型 Web 应用,中间件是很重要的基础设施。
二、常用的内置中间件
除了上面提到的 ErrorMiddleware,Vapor 还自带了几个开箱即用的中间件,它们各司其职:
| 中间件 | 作用 |
|---|---|
ErrorMiddleware | 把请求错误统一转换成 HTTP 响应,避免服务器直接断连,并在生产环境隐藏敏感信息。 |
FileMiddleware | 对 Public 目录下的文件提供文件服务,用于托管 js、css、html 等前端静态资源。 |
SessionMiddleware | 会话中间件,用来跟踪客户端连接的整个会话过程,是 Cookie 与 Session 功能的基础。 |
后面在「Cookie 与 Session」与「提供文件下载」两篇文章里,你会看到 SessionMiddleware 与 FileMiddleware 的具体配置代码与用法。