fast-forward / http-client
Fast Forward PSR-18 HTTP Client Factory
Fund package maintenance!
Requires
- php: ^8.3
- fast-forward/container: ^1.4
- psr/http-client: ^1.0
- psr/http-factory: ^1.1
- symfony/http-client: ^7.3
Requires (Dev)
- fast-forward/dev-tools: dev-main
This package is auto-updated.
Last update: 2026-04-08 19:19:51 UTC
README
FastForward HTTP Client is a focused integration package that registers a
PSR-18 HTTP client in a FastForward-compatible container. It uses Symfony
HttpClient as the transport layer and exposes
Psr\Http\Client\ClientInterface for application code.
What this package does
- Registers
Psr\Http\Client\ClientInterfaceasSymfony\Component\HttpClient\Psr18Client - Registers
Symfony\Component\HttpClient\HttpClientthroughHttpClient::create() - Fits naturally into
fast-forward/containerservice-provider based configuration
Important note for first-time users
This package does not register PSR-17 factories on its own. To resolve
Psr\Http\Client\ClientInterface, your container must already provide:
Psr\Http\Message\ResponseFactoryInterfacePsr\Http\Message\StreamFactoryInterface
In a FastForward application, the usual solution is to install
fast-forward/http-factory
or the all-in-one
fast-forward/http metapackage.
Installation
Install the package itself:
composer require fast-forward/http-client
Choose one of these setups:
- If your container already provides PSR-17 factories,
fast-forward/http-clientis enough. - If you want explicit FastForward PSR-17 and PSR-18 providers, install
fast-forward/http-client fast-forward/http-factory. - If you want the shortest onboarding path, install
fast-forward/http.
Quick start
This example uses both fast-forward/http-factory and
fast-forward/http-client so it works in a fresh project:
<?php declare(strict_types=1); use FastForward\Http\Client\ServiceProvider\HttpClientServiceProvider; use FastForward\Http\Message\Factory\ServiceProvider\HttpMessageFactoryServiceProvider; use Psr\Http\Client\ClientInterface; use Psr\Http\Message\RequestFactoryInterface; use function FastForward\Container\container; $container = container( new HttpMessageFactoryServiceProvider(), new HttpClientServiceProvider(), ); /** @var RequestFactoryInterface $requestFactory */ $requestFactory = $container->get(RequestFactoryInterface::class); $request = $requestFactory->createRequest('GET', 'https://example.com'); /** @var ClientInterface $client */ $client = $container->get(ClientInterface::class); $response = $client->sendRequest($request); $statusCode = $response->getStatusCode(); $body = (string) $response->getBody();
Registered services
| Service ID | Resolved object | Typical use |
|---|---|---|
Psr\Http\Client\ClientInterface |
Symfony\Component\HttpClient\Psr18Client |
Portable PSR-18 application code |
Symfony\Component\HttpClient\HttpClient |
A runtime-selected Symfony\Contracts\HttpClient\HttpClientInterface implementation |
Native Symfony HttpClient features |
Documentation
The Sphinx documentation in docs/ now covers:
- installation paths for beginners
- the dependency on PSR-17 factories
- direct Symfony client usage versus PSR-18 usage
- override patterns for timeouts, headers, and base URIs
- compatibility notes and FAQ entries for common setup mistakes
License
This package is open-source software licensed under the MIT License.
Contributing
Contributions, issues, and pull requests are welcome at php-fast-forward/http-client.