生命周期
生命周期
遵循 Fastify 内部生命周期的模式。
每个部分的右侧分支是生命周期的下一阶段,左侧分支是如果父级抛出错误将生成的相应错误代码(请注意,所有错误都由 Fastify 自动处理)。
Incoming Request
│
└─▶ Routing
│
└─▶ Instance Logger
│
4**/5** ◀─┴─▶ onRequest Hook
│
4**/5** ◀─┴─▶ preParsing Hook
│
4**/5** ◀─┴─▶ Parsing
│
4**/5** ◀─┴─▶ preValidation Hook
│
400 ◀─┴─▶ Validation
│
4**/5** ◀─┴─▶ preHandler Hook
│
4**/5** ◀─┴─▶ User Handler
│
└─▶ Reply
│
4**/5** ◀─┴─▶ preSerialization Hook
│
└─▶ onSend Hook
│
4**/5** ◀─┴─▶ Outgoing Response
│
└─▶ onResponse Hook
在 用户处理器
之前或期间的任何时间点,都可以调用 reply.hijack()
以阻止 Fastify
- 运行所有后续钩子和用户处理器
- 自动发送响应
注意 (*):如果使用 reply.raw
将响应发送回用户,则仍将执行 onResponse
钩子
响应生命周期
每当用户处理请求时,结果可能是
- 在异步处理器中:它返回一个有效负载
- 在异步处理器中:它抛出一个
Error
- 在同步处理器中:它发送一个有效负载
- 在同步处理器中:它发送一个
Error
实例
如果响应被劫持,我们将跳过以下所有步骤。否则,在提交响应时,执行的数据流如下
★ schema validation Error
│
└─▶ schemaErrorFormatter
│
reply sent ◀── JSON ─┴─ Error instance
│
│ ★ throw an Error
★ send or return │ │
│ │ │
│ ▼ │
reply sent ◀── JSON ─┴─ Error instance ──▶ setErrorHandler ◀─────┘
│
reply sent ◀── JSON ─┴─ Error instance ──▶ onError Hook
│
└─▶ reply sent
注意:响应已发送
表示 JSON 有效负载将由