Client HTTP pour PHP : top bibliothèques pour travailler avec les requêtes

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Client HTTP pour PHP : top bibliothèques pour travailler avec les requêtes



Le développement PHP moderne ne se passe guère de l'envoi de requêtes HTTP : intégration avec des API externes, parsing de pages web, vérification de la disponibilité des services. Les outils intégrés de PHP (par exemple, file_get_contents() ou cURL) sont souvent insuffisamment flexibles ou pratiques. Heureusement, l'écosystème PHP propose des bibliothèques clientes puissantes qui simplifient le travail avec HTTP. Dans cet article, nous allons analyser le top des bibliothèques clientes HTTP pour PHP, leurs caractéristiques et des exemples d'utilisation.



1. Guzzle — le standard de facto



Guzzle est la bibliothèque la plus populaire pour travailler avec HTTP en PHP. Elle est installée dans des millions de projets, y compris Laravel, Drupal et Symfony. Guzzle offre une interface orientée objet propre, prend en charge les requêtes asynchrones, les middleware, les pools de connexions et PSR-18 (HTTP Client).



Installation

composer require guzzlehttp/guzzle


Exemple : requête GET avec traitement de la réponse

<?phprequire 'vendor/autoload.php';

use GuzzleHttp\\Client;

$client = new Client([ 'base_uri' => 'https://api.github.com/', 'timeout' => 5.0,]);

$response = $client->request('GET', 'users/octocat');

echo $response->getStatusCode(); // 200$body = json_decode($response->getBody(), true);echo $body['login']; // octocat?>


Requête asynchrone

<?php$promise = $client->getAsync('https://httpbin.org/delay/1');$promise->then(    function ($response) {        echo 'Terminé : ' . $response->getStatusCode();    },    function ($exception) {        echo 'Erreur : ' . $exception->getMessage();    });$promise->wait(); // obligatoire pour exécuter?>


Avantages : immense communauté, flexibilité, middleware pour la journalisation/le cache, prise en charge complète de PSR-7/PSR-18.



2. Symfony HttpClient — rapide et moderne



Le composant Symfony HttpClient est apparu dans Symfony 4.4 et a rapidement gagné en popularité grâce à ses hautes performances, sa prise en charge intégrée du multiplexage (HTTP/2) et son excellente intégration avec Symfony. Il est également compatible avec PSR-18.



Installation

composer require symfony/http-client


Exemple : requêtes parallèles

<?phprequire 'vendor/autoload.php';

use Symfony\\Component\\HttpClient\\HttpClient;

$client = HttpClient::create();

$responses = [];$urls = [ 'https://api.github.com/users/octocat', 'https://api.github.com/users/nonexistent',];

foreach ($urls as $url) { $responses[] = $client->request('GET', $url);}

foreach ($responses as $response) { // La méthode getContent() attend automatiquement la réponse echo $response->getStatusCode() . ' - ' . $response->getContent(false) . "";}?>


Utilisation avancée : retry et mise en cache

<?phpuse Symfony\\Component\\HttpClient\\RetryableHttpClient;use Symfony\\Component\\HttpClient\\HttpClient;

$client = new RetryableHttpClient( HttpClient::create(['timeout' => 2.0]), maxRetries: 3);

$response = $client->request('GET', 'https://example.com');echo $response->getContent();?>


Avantages : haute vitesse, mécanisme de retry intégré, prise en charge de HTTP/2 push, faible consommation mémoire.



3. cURL (extension PHP) — classique



L'extension cURL est une solution intégrée à PHP qui fonctionne directement avec libcurl. Elle ne nécessite pas l'installation de bibliothèques tierces, mais le code est plus bas niveau. Elle convient pour des tâches simples ou lorsque Composer ne peut pas être utilisé.



Exemple : requête POST simple

<?php$ch = curl_init('https://httpbin.org/post');curl_setopt_array($ch, [    CURLOP                    

Recommendations