laravel:http-client-resilience について
laravel:http-client-resilienceは、予測しやすく観測可能なLaravelの外向きHTTP呼び出しを設計するスキルです。タイムアウトや再試行、リクエストログを制御する必要がある開発者向けです。
主な機能
- 01リクエストのタイムアウト設定
- 02一時的な障害に対する回数制限付き再試行
- 03テストしやすい依存性注入
- 04リクエストとレスポンスのコンテキスト付きログ
- 05pool()による並行呼び出し
活用シーン
- 01外向きAPI呼び出しにタイムアウトを設定
- 02一時的なリクエスト障害を再試行
- 03依存性注入を使ってHTTP連携をテスト
- 04複数のエンドポイントを並行して呼び出す
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ jpcaparas/ superpowers-laravel --skill laravel:http-client-resilienceインストール後、Claude Code で/laravel:http-client-resilienceを入力して読み込まれたか確認します。
詳細
HTTP クライアントの回復性
外部への呼び出しは、予測可能で、監視できるように設計します。
コマンド
use Illuminate\Support\Facades\Http;
$res = Http::baseUrl(config('services.foo.url'))
->timeout(5)
->retry(3, 200, throw: false)
->withHeaders(['Accept' => 'application/json'])
->get('/v1/things', ['q' => 'bar']);
if (!$res->successful()) {
Log::warning('foo api failure', [
'status' => $res->status(),
'body' => substr($res->body(), 0, 500),
]);
}
パターン
- タイムアウトを明示的に設定します(クライアントとサーバーではデフォルトが異なります)
- 一時的な障害に限り、バックオフを設けた回数制限付きの再試行を使用します
- テストしやすくするため、依存性の注入を優先します
- リクエストとレスポンスのコンテキストをログに追加します(機密データはマスキングしてください)
- 複数のエンドポイントを呼び出す場合は、並行処理に
pool()を使用します
コメント
Markdown 対応