Skip to main content

Qu’est-ce que le client HTTP

Le client HTTP de Laravel est une API simple qui enveloppe Guzzle. Via la façade Http, envoyez facilement des requêtes vers des services web externes.
Guzzle est préinstallé — aucune configuration nécessaire.

Requêtes de base

GET

Paramètres de requête en tableau :

POST

Envoi en application/json par défaut.

PUT / PATCH / DELETE

Traiter la réponse

Http::get() retourne un Illuminate\Http\Client\Response.
Accès par index :

Options de requête

En-têtes

Pour accepter du JSON, acceptJson().
Pour les headers CSRF (X-CSRF-TOKEN / X-XSRF-TOKEN) côté navigateur, voir Protection CSRF.

Authentification

Bearer (le plus courant) :
Basic :

URL de base

Données de formulaire

application/x-www-form-urlencoded :

Timeout

Un dépassement lève Illuminate\Http\Client\ConnectionException. Toujours définir des timeouts.

Retry

Retry conditionnel (uniquement erreur de connexion, par exemple) :

Gestion des erreurs

Vérifier manuellement

Par défaut, aucune exception n’est levée sur 4xx/5xx. Vérifiez avec failed(), clientError(), etc.

Lever une exception

throw() lance Illuminate\Http\Client\RequestException en cas d’erreur.
throw() retourne la réponse — chaînable :
Gestion des exceptions :

Requêtes en parallèle

pool() exécute plusieurs requêtes en concurrence.
Bien plus rapide qu’en séquentiel. Idéal pour un dashboard qui aggrège plusieurs API.

Tests

Http::fake() pour mocker

Sans envoyer de vraies requêtes.
Réponses par URL :
Séquence de réponses :

Vérification des requêtes

Appelez toujours Http::fake() en début de test. Sans lui, de vraies requêtes partent vers l’extérieur. Http::preventStrayRequests() fait échouer toute requête non fakée.

Empêcher les requêtes non prévues

Exemple : service class pour une API externe

Bonne pratique : encapsuler la logique HTTP dans une service class.
1

Créer la service class

2

Enregistrer dans le service provider

3

Utiliser dans un contrôleur

4

Écrire un test

Récapitulatif

  • Encapsulez la logique HTTP dans des service classes
  • Toujours définir un timeout() et un connectTimeout()
  • Configurez un retry() pour les erreurs transitoires
  • En test, Http::fake() obligatoire — ne jamais appeler l’API réelle
  • Ajoutez Http::preventStrayRequests() dans le setup des tests
  • Gérez tokens et secrets via variables d’env + config/services.php
Dernière modification le 13 juillet 2026