Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
Http Client

Http Client Laravel Package

amphp/http-client

Asynchronous HTTP client for PHP built on Revolt and fibers. Supports HTTP/1 & HTTP/2, concurrent requests, connection pooling, redirects, gzip/deflate, streaming bodies, TLS by default, forms, cookies, and proxies—no ext/curl dependency.

View on GitHub
Deep Wiki
Context7

An advanced async HTTP client library for PHP, enabling efficient, non-blocking, and concurrent requests and responses.

Frequently asked questions about Http Client
Can I use amphp/http-client in Laravel without blocking the event loop?
Yes, but you’ll need to integrate it with an event loop like Amp\run() or use a Laravel-compatible async wrapper like spatie/laravel-amp. Most Laravel services (e.g., Eloquent, Queues) are synchronous, so async HTTP calls must run in fibers or background processes to avoid blocking.
How do I replace Guzzle with amphp/http-client in Laravel’s HttpClient facade?
You’ll need to create a custom HTTP client resolver or middleware that adapts amphp/http-client to Laravel’s facade. This involves wrapping the async client in a synchronous interface or using a hybrid approach where async calls are dispatched via queues or fibers.
Does amphp/http-client support HTTP/2 for better performance in Laravel APIs?
Yes, it fully supports HTTP/2 with multiplexing for concurrent requests. For optimal performance, install the `nghttp2` extension via FFI (optional but recommended). This reduces latency for APIs handling multiple concurrent HTTP/2 requests, like GraphQL or gRPC endpoints.
How do I handle cookies and sessions with amphp/http-client in Laravel?
Use the built-in `CookieHandler` interceptor to manage cookies. For sessions, you’ll need to manually persist cookies between requests or integrate with Laravel’s session driver via custom interceptors. Unlike Guzzle, there’s no built-in session container, so session state must be managed externally.
Will amphp/http-client work with Laravel’s middleware (e.g., auth, CORS)?
Not natively, but you can create async-compatible interceptors to replicate middleware behavior. For example, auth middleware would need to validate tokens in a fiber context. Laravel’s middleware stack is synchronous, so async HTTP calls may require refactoring or hybrid patterns.
How do I stream large file downloads/uploads in Laravel using this client?
Use the streaming payload feature to avoid memory overload. For downloads, iterate over the response body chunk-by-chunk (e.g., `while ($chunk = $response->getBody()->read())`). For uploads, stream files directly from disk without loading them entirely into memory, which is critical for Laravel apps handling large media files.
What’s the best way to test amphp/http-client in Laravel’s async context?
Use PHPUnit with Amp’s test utilities (e.g., `Amp\Test\Assert`) to verify async behavior. Mock HTTP responses with `HttpClientBuilder` and test interceptors in isolation. For integration tests, use a local HTTP server (e.g., `pesthttp`) or services like WireMock to simulate async request/response cycles.
Does amphp/http-client support redirects like Guzzle does?
Yes, it automatically follows redirects by default. You can customize this behavior with the `FollowRedirects` interceptor to control max redirects, allowed methods, or redirect status codes. Unlike Guzzle, redirects are handled asynchronously within the fiber context.
How do I handle timeouts and retries in Laravel with this async client?
Use the `Timeout` and `RetryRequests` interceptors to enforce timeouts (e.g., 5 seconds) and retry failed requests. For Laravel, wrap these in a service class to abstract async error handling. Fallback strategies (e.g., retry with Guzzle) can be implemented via custom interceptors or middleware.
What are the alternatives to amphp/http-client for async HTTP in Laravel?
Alternatives include ReactPHP’s `react/http-client` (also async but event-loop based) or Guzzle with async extensions like `guzzlehttp/promises`. However, amphp/http-client is unique for its fiber-based concurrency and HTTP/2 support without ext/curl. For Laravel, consider `spatie/laravel-amp` for easier async integration.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
nexmo/api-specification
capell-app/block-library
axium/identity
cetria/laravel-dummy-models
cetria/reflection-helper
agropredict/sso-auth-bundle
evolvestudio/spam-protection
datacore/hub-sdk
develia/commons
cuci/prototurk-sdk
cuci/prototurk-sdk-symfony
develia/geo-bundle
dreamzy/livewire-charts
touchestate-sdk/php-sdk
ecotone/kafka
22h/doctrine-garbage-collection-bundle
agtp/agtp-php
agtp/mod-php
splash/sonata-admin
splash/metadata