handle
に渡される event
オブジェクトは、+server.js
ファイルの API routes や +page.server.js
ファイルの form actions や +page.server.js
と +layout.server.js
の load
関数に渡されるものと同じオブジェクトで、RequestEvent
のインスタンスです。
便利なプロパティやメソッドを数多く持っており、いくつかはすでに見たことがあるでしょう:
cookies
— cookies APIfetch
— 標準の Fetch API と同等ですが、いくつかの機能が追加されていますgetClientAddress()
— クライアントの IP アドレスを取得する関数isDataRequest
— クライアントサイドナビゲーション中にブラウザがデータをリクエストしているとtrue
、ページやルート(route)が直接リクエストされているとfalse
locals
— 任意のデータを置く場所params
— ルート(route)のパラメータrequest
— Request オブジェクトroute
— マッチしたルート(route)を表すid
プロパティを持つオブジェクトsetHeaders(...)
— レスポンスに HTTP ヘッダーを設定する関数url
— 現在のリクエストを表す URL オブジェクト
便利なパターンとしては、handle
で event.locals
にデータを追加して、後続の load
関数でそれを使用できるようにすることです:
src/hooks.server.js
export async function handle({ event, resolve }) {
event.locals.answer = 42;
return await resolve(event);
}
src/routes/+page.server.js
export function load(event) {
return {
message: `the answer is ${event.locals.answer}`
};
}