Fastify 中如何使用 onRequest 钩子?

推荐答案

在 Fastify 中,onRequest 钩子用于在请求处理流程的最开始阶段执行自定义逻辑。你可以在路由级别或全局级别注册 onRequest 钩子。以下是一个示例:

你还可以在路由级别使用 onRequest 钩子:

-- -------------------- ---- -------
---------------
  ------- ------
  ---- -----------
  ---------- ----- --------- ------ -- -
    --------------------------- --------- -------
  --
  -------- ----- --------- ------ -- -
    ------ - -------- ------- --------- --
  -
---

本题详细解读

1. onRequest 钩子的作用

onRequest 钩子是 Fastify 生命周期钩子之一,它在请求到达服务器后立即执行,但在路由匹配之前。因此,它非常适合用于执行一些全局的预处理逻辑,例如日志记录、请求验证、身份验证等。

2. 全局 onRequest 钩子

全局 onRequest 钩子适用于所有请求。你可以通过 fastify.addHook 方法来注册全局钩子。例如:

3. 路由级别 onRequest 钩子

如果你只想在特定路由上执行 onRequest 钩子,可以在定义路由时直接添加 onRequest 钩子。例如:

-- -------------------- ---- -------
---------------
  ------- ------
  ---- -----------
  ---------- ----- --------- ------ -- -
    --------------------------- --------- ---- ------------
  --
  -------- ----- --------- ------ -- -
    ------ - -------- ------- --------- --
  -
---

4. 异步处理

onRequest 钩子支持异步操作。你可以在钩子中使用 async/await 来处理异步任务,例如从数据库中获取数据或调用外部 API。

5. 钩子的执行顺序

在 Fastify 中,钩子的执行顺序非常重要。onRequest 钩子是在请求处理流程的最开始阶段执行的,因此在它之后的其他钩子(如 preHandler)会依次执行。

6. 错误处理

如果在 onRequest 钩子中抛出错误,Fastify 会立即停止处理请求,并返回一个错误响应。你可以通过 reply.sendreply.code 来定制错误响应。

通过以上方式,你可以在 Fastify 中灵活使用 onRequest 钩子来处理请求的预处理逻辑。

纠错
反馈