Skip to main content

handle に渡される event オブジェクトは、+server.js ファイルの API routes+page.server.js ファイルの form actions+page.server.js+layout.server.jsload 関数に渡されるものと同じオブジェクトで、RequestEvent のインスタンスです。

便利なプロパティやメソッドを数多く持っており、いくつかはすでに見たことがあるでしょう:

  • cookiescookies API
  • fetch — 標準の Fetch API と同等ですが、いくつかの機能が追加されています
  • getClientAddress() — クライアントの IP アドレスを取得する関数
  • isDataRequest — クライアントサイドナビゲーション中にブラウザがデータをリクエストしていると true、ページやルート(route)が直接リクエストされていると false
  • locals — 任意のデータを置く場所
  • params — ルート(route)のパラメータ
  • requestRequest オブジェクト
  • route — マッチしたルート(route)を表す id プロパティを持つオブジェクト
  • setHeaders(...) — レスポンスに HTTP ヘッダーを設定する関数
  • url — 現在のリクエストを表す URL オブジェクト

便利なパターンとしては、handleevent.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}`
	};
}

Next: handleFetch

1
2
3
4
5
<script>
	export let data;
</script>
 
<h1>{data.message}</h1>
initialising