litestar-middleware について
Litestar のミドルウェアを選択、実装するためのスキルです。組み込み設定とカスタム ASGI ミドルウェアの判断から、順序やスコープ、レスポンス動作の検証まで案内します。
主な機能
- 01組み込みミドルウェアの選択
- 02ミドルウェア層と順序の指針
- 03カスタム ASGI 実装パターン
- 04スコープと除外ルールの扱い
- 05成功時とエラー時のレスポンス確認
活用シーン
- 01横断的なリクエスト処理の追加
- 02ミドルウェアとライフサイクルフックの選択
- 03ミドルウェアの実行順序の確認
- 04下流エラーと除外ルールのテスト
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ alti3/ litestar-skills --skill litestar-middlewareインストール後、Claude Code で/litestar-middlewareを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/builtin-and-ordering.mdcustom-middleware-patterns.md詳細
ミドルウェア
実行ワークフロー
- その要件が本当にミドルウェアに適しているか確認します。ルートのビジネスロジックではなく、ASGI 全体をラップする処理である必要があります。
- まずは組み込みの設定ベースのミドルウェアを優先します。
- 適切なレイヤーと順序を慎重に選びます。
- その処理がミドルウェア、ライフサイクルフック、ルートロジックのどれに該当するか判断します。
- カスタムミドルウェアを使う場合は、要件を満たす最もシンプルな実装スタイルを選びます。
- 成功時と例外によって生成されたレスポンスの両方に加え、除外設定とスコープの扱いも検証します。
基本ルール
- ミドルウェアは、横断的関心事を 1 つだけ扱うようにします。
- カスタム実装を作成する前に、組み込みのミドルウェアや設定オブジェクトを優先します。
- ミドルウェアの順序は API の動作の一部として扱います。
- 必要に応じて、ミドルウェアのスコープを
http、websocket、lifespanに対応させます。 - ASGI メッセージをラップするのではなく、レスポンスオブジェクトを変更する処理にはライフサイクルフックを使います。
- ミドルウェアはノンブロッキングで、ASGI に準拠させます。
- ルーターが生成するこれらの例外はミドルウェアスタックに入る前に発生するため、
404と405の想定を明確にします。
判断ガイド
- CORS、CSRF、圧縮、レート制限、ロギング、セッション、許可ホストには、組み込みの設定ミドルウェアを使います。
- ごく小さなラッパーには、ミドルウェアファクトリーを使います。
- 設定可能な本番用カスタムミドルウェアには、
ASGIMiddlewareを使います。 - 最小限の低レベル処理には、
MiddlewareProtocolを使います。 AbstractMiddlewareは、互換性の維持や移行の場合にのみ使います。- コンストラクター形式の引数をミドルウェアファクトリーまたはクラスに渡す必要がある場合は、
DefineMiddlewareを使います。 - 処理が
after_request、before_send、または関連するフックの段階に該当する場合は、代わりにlitestar-lifecycle-hooksを使います。
リファレンスファイル
必要なセクションだけを読んでください。
- ミドルウェアの基本、順序、除外設定、組み込みミドルウェアの選択については、references/builtin-and-ordering.md を読んでください。
- カスタムミドルウェアの実装スタイル、
ASGIMiddleware、MiddlewareProtocol、AbstractMiddleware、DefineMiddlewareについては、references/custom-middleware-patterns.md を読んでください。
推奨されるデフォルト
- 一度に扱うミドルウェアの関心事は 1 つにします。
- 組み込みの設定値を明示し、レビューします。
- 除外設定と
optに基づくスキップは範囲を絞り、テストします。 - 順序に関する前提が本当に自明でない場合に限り、コードコメントで明示します。
- 成功するハンドラーと失敗する下流ハンドラーの両方に対して、ミドルウェアをテストします。
アンチパターン
- ルート固有のビジネスルールをミドルウェアに入れる。
- 組み込みの設定やライフサイクルフックで対応できるのに、カスタムミドルウェアを作成する。
- 複数のラッパーが相互作用するときに、ミドルウェアの順序を無視する。
- 誤った ASGI の段階でリクエストまたはレスポンスの状態を変更する。
- ルーターが生成する
404と405がミドルウェアを通過すると想定する。 - 文書化されていない
optの除外設定やパスパターンに、ミドルウェアが暗黙に依存する状態にする。
検証チェックリスト
- ミドルウェアが意図したレイヤーだけに適用されていることを確認します。
- レイヤーの優先順位とリストの順序の両方に合致していることを確認します。
- パスパターン、
exclude_opt_key、またはスコープによる除外設定が意図どおりに動作することを確認します。 - 成功時と例外によって生成されたレスポンスの両方で、動作が正しいことを確認します。
404と405の動作が適切な境界で処理されることを確認します。- カスタムミドルウェアが引き続き ASGI に準拠し、ノンブロッキングであることを確認します。
- 組み込みのセキュリティおよびロギングミドルウェアの設定が、デプロイ時の要件に合っていることを確認します。
他のスキルへの引き継ぎ
- 生の ASGI ラップではなく、フックの段階で行うロジックには
litestar-lifecycle-hooksを使います。 - ドメイン固有のミドルウェア処理には、
litestar-authentication、litestar-security、litestar-logging、litestar-metricsを使います。 - ミドルウェアの相互作用がランタイムの不具合の原因である場合は、
litestar-debuggingを使います。 - ミドルウェアの動作がレイヤーの配置や
optの戦略に依存する場合は、litestar-routingを使います。
Litestar References
コメント
Markdown 対応