Guzzle pour PHP : guide complet avec exemples

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

Qu'est-ce que Guzzle et pourquoi en a-t-on besoin ?

\n\n

Guzzle est une puissante bibliothèque PHP pour travailler avec les requêtes HTTP. Elle fournit une interface pratique pour envoyer des requêtes HTTP, traiter les réponses, gérer les cookies, les sessions, les requêtes asynchrones et bien plus encore. Si vous travaillez avec des API, scrapez des pages web ou interagissez simplement avec des serveurs distants, Guzzle deviendra votre outil indispensable.

\n\n

Principales fonctionnalités de Guzzle :

\n
    \n
  • Prise en charge de toutes les méthodes HTTP (GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS)
  • \n
  • Gestion des en-têtes, du corps de la requête, des paramètres d'URL
  • \n
  • Prise en charge des requêtes asynchrones (basées sur les Promesses)
  • \n
  • Traitement automatique des redirections
  • \n
  • Gestion des cookies et des sessions
  • \n
  • Middleware pour étendre les fonctionnalités
  • \n
  • Prise en charge de PSR-7 (interfaces PSR-7 pour les messages HTTP)
  • \n
  • Tests et simulation faciles
  • \n
\n\n

Guzzle est utilisé dans des projets majeurs tels que Laravel (client HTTP intégré), Drupal, Magento et bien d'autres.

\n\n

Installation

\n\n

L'installation de Guzzle se fait via Composer, le gestionnaire de dépendances pour PHP. Si vous n'avez pas encore Composer, installez-le depuis le site officiel getcomposer.org.

\n\n

Exécutez la commande dans le terminal à la racine de votre projet :

\n\n
composer require guzzlehttp/guzzle
\n\n

Après l'installation, incluez l'autoloader de Composer dans votre fichier PHP :

\n\n
require 'vendor/autoload.php';
\n\n

Vous êtes maintenant prêt à travailler avec Guzzle.

\n\n

Démarrage rapide

\n\n

Envoyons une simple requête GET à une API publique et récupérons les données au format JSON.

\n\n
<?php\nrequire 'vendor/autoload.php';\n\nuse GuzzleHttp\\Client;\n\n$client = new Client();\n$response = $client->get('https://jsonplaceholder.typicode.com/posts/1');\n\n// Récupération du corps de la réponse\n$body = $response->getBody();\n\n// Conversion du JSON en tableau\n$data = json_decode($body, true);\n\necho "Title: " . $data['title'] . "\\n";\necho "Body: " . $data['body'] . "\\n";\n?>
\n\n

Cet exemple montre à quel point il est facile de récupérer des données depuis un serveur distant. Guzzle gère automatiquement les en-têtes, les codes de statut et le corps de la réponse.

\n\n

Méthodes et fonctions principales

\n\n

1. get() — Requête GET

\n

Ce qu'elle fait : Envoie une requête HTTP GET à l'URL spécifiée. Utilisée pour récupérer des données.

\n

Paramètres :

\n
    \n
  • $uri (string) — URL de la requête
  • \n
  • $options (array) — tableau d'options (en-têtes, paramètres de requête, timeouts, etc.)
  • \n
\n

Exemple :

\n
<?php\n$client = new GuzzleHttp\\Client();\n$response = $client->get('https://api.github.com/users/octocat', [\n    'headers' => [\n        'Accept' => 'application/json',\n        'User-Agent' => 'Guzzle-Demo'\n    ],\n    'query' => [\n        'page' => 1,\n        'per_page' => 10\n    ]\n]);\n\necho $response->getStatusCode(); // 200\necho $response->getBody();\n?>
\n\n

2. post() — Requête POST

\n

Ce qu'elle fait : Envoie une requête POST. Utilisée pour créer de nouvelles ressources ou envoyer des données au serveur.

\n

Paramètres :

\n
    \n
  • $uri (string) — URL de la requête
  • \n
  • $options (array) — tableau d'options (body, form_params, json, multipart, etc.)
  • \n
\n

Exemple :

\n
<?php\n$client = new GuzzleHttp\\Client();\n$response = $client->post('https://jsonplaceholder.typicode.com/posts', [\n    'json' => [\n        'title' => 'Nouveau post',\n        'body' => 'Contenu du post',\n        'userId' => 1\n    ]\n]);\n\necho $response->getStatusCode(); // 201\n$data = json_decode($response->getBody(), true);\nprint_r(                    

Recommendations