ライフサイクルとフック
Frourio におけるライフサイクル
Frourio と frourio-express のどちらも、fastify に似た形式のフックを提供しています。
全体のライフサイクルは下図のようになっていて、onRequest, preParsing, preValidation, preHandler などのフックを定義できます。
Ref. Lifecycle - Fastify
フックの定義方法を探していますか?
フックの定義方法はルーティングページにあります。以下のリンクから defineController() や defineHooks() について参照してください。
オブジェクト ServerHooks
{
[(フックの名称)]: HooksHandler or HooksHandler[],
}フックの名称を key とし、HooksHandler または HooksHandler[] を value とするオブジェクト。
有効なフックの名称:
onRequestpreParsingpreValidationpreHandler
関数 HooksHandler
- Fastify
- Express
引数の型
request:FastifyRequest&AdditinalRequestreply:FastifyReplydone: function<TError extends Error = FastifyError>(err?: TError) => void
done はライフサイクルを続行する関数です。
注意
async/await を使用しているときや Promise を返しているときは done コールバックを使用できません。このような状況で done コールバックを呼び出すと、ハンドラを重複して呼び出すなど、予期しない動作が発生する可能性があります。
ref. Hooks - Fastify
引数の型
req:Request&AdditinalRequestres:Responsenext: function(err?: any) => void
next はライフサイクルを続行する関数です。(async/awaitを使用しているときやPromise を返しているときも含みます。)