
こんにちは。よっしーです(^^)
今日は、SvelteKitのリファレンスについて解説しています。
背景
SvelteKitのリファレンスについて調査する機会がありましたので、その時の内容を備忘として記事に残しました。
@sveltejs/kit
HandleFetch
handleFetch
フックは、サーバー上(またはプリレンダリング中)で実行されるload
関数内部で発生するfetch
リクエストを修正(または置き換え)することができます。
型定義:
- 入力として以下のプロパティを持つオブジェクトを受け取ります:
- event: RequestEvent型のリクエストイベント
- request: Request型のリクエスト
- fetch: fetch関数の型と同じ型
- 戻り値はResponseまたはPromise
解説
HandleFetchは、サーバーサイドでのデータフェッチをカスタマイズするためのフックです。
- 主な目的:
load
関数内でのfetch
リクエストの制御- リクエストの修正や置き換えが可能
- サーバーサイドとプリレンダリング時のみ動作
- 入力パラメータの詳細:
- event: サーバーサイドのリクエストコンテキストを提供
- request: 実際のフェッチリクエストの詳細
- fetch: 元の
fetch
関数への参照
- 一般的なユースケース:
- APIリクエストへのヘッダー追加
- キャッシュの制御
- プロキシの設定
- 認証情報の付加
- リクエストの書き換え
- 重要な特徴:
- 非同期処理に対応
- クライアントサイドではなくサーバーサイドでのみ動作
- プリレンダリング時にも実行される
このフックは、特にサーバーサイドでのデータフェッチに関する細かい制御が必要な場合に有用です。
HandleServerError
サーバーサイドのhandleError
フックは、リクエストへの応答中に予期しないエラーが発生したときに実行されます。
ローディングまたはレンダリング中に予期しないエラーが発生した場合、この関数はエラーとイベントを引数として呼び出されます。この関数が決してエラーをスローしないようにしてください。
型定義:
- 入力として以下のプロパティを持つオブジェクトを受け取ります:
- error: 不明な型のエラー
- event: RequestEvent型のリクエストイベント
- status: 数値型のステータス
- message: 文字列型のメッセージ
- 戻り値は、voidまたはApp.Error型で、Promiseでラップすることも可能
解説
HandleServerErrorは、サーバーサイドのエラーハンドリングを担当する重要なフックです。
- 実行コンテキスト:
- サーバーサイドでのみ動作
- リクエスト処理中のエラーをキャッチ
- ローディングとレンダリングの両フェーズをカバー
- 入力パラメータの詳細:
- error: あらゆる型のエラーを受け付け(unknown型)
- event: リクエストに関する情報を含むイベントオブジェクト
- status: HTTPステータスコード
- message: エラーの説明メッセージ
- 重要な注意点:
- エラーをスローしてはいけない
- 安全なエラーハンドリングが必須
- 非同期処理が可能
- 一般的な使用例:
- エラーのログ記録
- エラー監視システムへの通知
- カスタムエラーレスポンスの生成
- デバッグ情報の収集
- エラーメトリクスの記録
このフックは、サーバーサイドでの堅牢なエラー処理を実装するための重要な手段を提供します。
HttpError
error
関数によって返されるオブジェクト
インターフェース定義:
interface HttpError {…}
プロパティ:
status: number;
400-599の範囲のHTTPステータスコード。body: App.Error;
エラーの内容。
解説
HttpErrorは、アプリケーションでのエラーハンドリングを標準化するためのインターフェースです。
- 構造の特徴:
- シンプルな2つのプロパティ構成
- 標準的なHTTPエラーステータスコードを使用
- カスタムエラー内容を保持可能
- statusプロパティの詳細:
- 400-599の範囲に限定
- 400番台:クライアントエラー
- 500番台:サーバーエラー
- 一般的なHTTP規約に準拠
- bodyプロパティの特徴:
App.Error
型を使用- アプリケーション固有のエラー情報を格納
- エラーの詳細な内容を提供可能
- 使用シーン:
- APIレスポンスのエラー
- ルーティングエラー
- 認証/認可エラー
- バリデーションエラー
このインターフェースは、エラー情報を構造化された形式で扱うための標準的な方法を提供します。
おわりに
今日は、 SvelteKitのリファレンスについて解説しました。

何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント