laravel:http-client-resilience
HTTP Client Resilience
Design outbound calls to be predictable and observable.
Commands
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),
]);
}
Patterns
- Set timeouts explicitly (client and server defaults differ)
- Use limited retries with backoff for transient failures only
- Prefer dependency injection for testability
- Add request/response context to logs (redact sensitive data)
- Use
pool()for concurrency when calling multiple endpoints
More from jpcaparas/superpowers-laravel
laravel:routes-best-practices
Keep routes clean and focused on mapping requests to controllers; avoid business logic, validation, or database operations in route files
88laravel:blade-components-and-layouts
Compose UIs with Blade components, slots, and layouts; keep templates pure and testable
88laravel:quality-checks
Unified quality gates for Laravel projects; Pint, static analysis (PHPStan/Psalm), Insights (optional), and JS linters; Sail and non-Sail pairs provided
79laravel:performance-caching
Use framework caches and value/query caching to reduce work; add tags, locks, and explicit invalidation strategies for correctness
76laravel:eloquent-relationships
Define clear relationships and load data efficiently; prevent N+1, use constraints, counts/sums, and pivot syncing safely
75laravel:queues-and-horizon
Operate and verify queues with or without Horizon; safe worker flags, failure handling, and test strategies
74