中间件
H1
中间件是一种全局的、在执行 API 之前或之后,执行任意逻辑的方式。
通常,用于配合 Meta 来检查和过滤发送给 API 的请求和响应,或用于设置 Context。
一开始,你希望一个 API 只对登录之后的用户提供服务,所以,你在 API 的起始位置编写了判断用户是否登录的代码:
接下来,你发现这段确保用户必须登录的逻辑,似乎许多 API 都需要,这个时候,你就可以把它编写为中间件。在你的 /src/middlewares/
目录中,新建一个 ensure-logined-middleware.ts
:
我们使用了 defineMiddleware
定义了一个中间件。在里面,我们使用了一个 beforeExecute
生命周期挂钩,它会在 API 被执行之前调用,在任何生命周期挂钩中,抛出任何异常都可以中断调用。如果挂钩方法都正常执行完成,那么将继续执行下一个挂钩。
我们需要将中间件添加到 MilkioApp 中,编辑你的 /milkio.ts
文件:
middlewares 是一个函数,它返回一个数组,其中包含你要添加到 MilkioApp 的中间件。数组中越靠前的中间件,就越接近于”洋葱”的最外部。
生命周期挂钩
方法名称 | 触发时机 | 参数 | 备注 |
---|---|---|---|
bootstrap | 在 MilkioApp 启动时执行 | milkioApp | 仅在启动时被执行一次 |
afterHTTPRequest | 在 HTTP 请求到达之后执行 | headers, detail | 仅对于 HTTP 调用会执行 |
beforeExecute | 在 API 被真正执行之前执行 | context | 通过任何方式调用都执行 |
afterExecute | 在 API 被真正执行之后执行 | context, response | 通过任何方式调用都执行 |
beforeHTTPResponse | 在 HTTP 请求结束之前执行 | response, detail | 仅对于 HTTP 调用会执行 |
httpNotFound | 在 HTTP 请求找不到时执行 | detail | milkio-static 依赖这个挂钩 |