handle()フック:リクエストのミドルウェア
受信するすべてのリクエストをインターセプトし、event.localsを変更してresolve()を呼び出します。
「handle()フック:リクエストのミドルウェア」はCoddyKit上の無料Sveltejs Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSveltejs Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Sveltejs Academyコースには全4レッスンが含まれています。
サーバーフック
フックはsrc/hooks.server.jsに配置します。サーバーへのすべてのリクエストで実行されます。
handle のエクスポート
{ event, resolve }を受け取る、handleという名前のasync関数をエクスポートします。
export async function handle({ event, resolve }) {
// do stuff before
const res = await resolve(event);
// do stuff after
return res;
}event の変更
event.localsに値を設定すると、loadやエンドポイントからデータを利用できるようになります。
event.locals.user = await getUser(event.cookies.get("sid"));レスポンスの検査または置換
resolve(event)の後で、レスポンスを検査または変更できます。
リクエストのログ記録
handleフックは、リクエストのログ記録や処理時間のメトリクスを追加するのに適した場所です。
認証レイヤー
Cookieを読み取り、ユーザーを取得して、localsに追加します。これにより、ページやAPIはlocalsを信頼して利用できます。
フックの合成
複数の処理をヘルパーでラップし、sequence()で組み合わせられます。
CORSヘッダー
他のオリジンから利用されるAPIでは、レスポンスを返す際にCORSヘッダーを追加します。
パフォーマンス
フックはすべてのリクエストで実行されます。高速に保ち、非同期処理に安全な実装にしてください。
静的アセットのスキップ
SvelteKitは静的ファイルに対してフックをスキップします。フックが実行されるのはアプリのルートだけです。
TypeScript
型付きの実装には、@sveltejs/kitのHandle型を使用します。
確認問題
サーバーフックはどこに配置しますか?
まとめ
hooks.server.jsのhandleフックは、すべてのリクエストをインターセプトします。後続のコードで使えるようにlocalsを設定します。
よくある質問
「handle()フック:リクエストのミドルウェア」レッスンは無料ですか?
はい。「handle()フック:リクエストのミドルウェア」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Sveltejs Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Sveltejs Academyコースには全4レッスンが含まれています。
「handle()フック:リクエストのミドルウェア」で何を学びますか?
受信するすべてのリクエストをインターセプトし、event.localsを変更してresolve()を呼び出します。 ブラウザで直接実行するハンズオンコードでSveltejs Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Sveltejs Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSveltejs Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「handle()フック:リクエストのミドルウェア」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSveltejs Academyレッスンでコードを書いて実行できますか?
はい。すべてのSveltejs Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- handle()フック:リクエストのミドルウェア
- サーバーエラーログのhandleError
- init()フック
- フックを合成するsequence()