fast-forward/http-client

Fast Forward PSR-18 HTTP Client Factory

Maintainers

Package info

github.com/php-fast-forward/http-client

Homepage

pkg:composer/fast-forward/http-client

Fund package maintenance!

php-fast-forward

Statistics

Installs: 109

Dependents: 1

Suggesters: 0

Stars: 0

Open Issues: 0

v1.1.0 2026-03-29 14:16 UTC

This package is auto-updated.

Last update: 2026-04-08 19:19:51 UTC


README

PHP Version Composer Package Tests Coverage Docs License GitHub Sponsors

PSR-11 PSR-18

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\ClientInterface as Symfony\Component\HttpClient\Psr18Client
  • Registers Symfony\Component\HttpClient\HttpClient through HttpClient::create()
  • Fits naturally into fast-forward/container service-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\ResponseFactoryInterface
  • Psr\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-client is 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.