ライフサイクル
ライフサイクル
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 が以下を実行しないようにできます。
- すべての次のフックとユーザーハンドラーを実行します。
- 自動的にレスポンスを送信します。
NB (*): reply.raw
を使用してユーザーにレスポンスを送信する場合、onResponse
フックは依然として実行されます。
レスポンスのライフサイクル
ユーザーがリクエストを処理すると、結果は次のようになります。
- 非同期ハンドラーの場合: ペイロードを返します。
- 非同期ハンドラーの場合:
エラー
をスローします。 - 同期ハンドラーの場合: ペイロードを送信します。
- 同期ハンドラーの場合:
エラー
インスタンスを送信します。
レスポンスがハイジャックされている場合、以下のステップをスキップします。それ以外の場合は、送信時に実行されるデータフローは次のとおりです。
★ 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 ペイロードが以下によってシリアル化されることを意味します。
- レスポンスがシリアル化された 場合(設定されている場合)
- またはシリアライザーコンパイラが、返される HTTP ステータスコードに対して JSON スキーマが設定されている場合
- またはデフォルトの
JSON.stringify
関数