Introduction : l'API n'est pas de la magie, c'est un outil
\nLorsque votre site PHP cesse d'être une simple page statique et commence à communiquer avec le monde extérieur — bots Telegram, passerelles de paiement ou votre propre application mobile — vous rencontrez inévitablement une API (Application Programming Interface). C'est simplement un contrat : « Si tu m'envoies une requête dans ce format, je te retourne les données ». Aujourd'hui, sur la scène PHP, trois acteurs principaux : le classique REST, le flexible GraphQL et l'audacieux gRPC. Lequel choisir ? Découvrons-le avec des exemples concrets.
\nCet article est destiné à ceux qui savent déjà coder en PHP et souhaitent élargir leurs horizons. Nous ne nous contenterons pas de copier la documentation, mais nous examinerons chaque protocole avec les yeux d'un développeur confronté à un problème réel.
\n\nAPI REST en PHP : un classique éprouvé
\nREST (Representational State Transfer) n'est pas un protocole, mais un style architectural. Il utilise les méthodes HTTP (GET, POST, PUT, DELETE) pour travailler avec des ressources. Si vous avez déjà écrit file_get_contents('https://api.example.com/users') — vous avez déjà travaillé avec REST.
Pourquoi REST reste-t-il roi ?
\n- \n
- Simplicité : tout client HTTP peut fonctionner avec. \n
- Mise en cache : au niveau HTTP, les requêtes GET peuvent être mises en cache. \n
- Large support : de curl aux bibliothèques spécialisées. \n
Exemple de client REST en PHP avec Guzzle
\nLa bibliothèque Guzzle est la norme de facto pour les requêtes HTTP en PHP. Installez-la via Composer : composer require guzzlehttp/guzzle.
<?php\nrequire 'vendor/autoload.php';\n\nuse GuzzleHttp\\Client;\n\n$client = new Client([\n 'base_uri' => 'https://jsonplaceholder.typicode.com/',\n 'timeout' => 5.0,\n]);\n\n// Requête GET\n$response = $client->get('posts/1');\n$post = json_decode($response->getBody(), true);\necho "Titre du post : " . $post['title'] . PHP_EOL;\n\n// Requête POST\n$response = $client->post('posts', [\n 'json' => [\n 'title' => 'Nouveau post',\n 'body' => 'Texte du post',\n 'userId' => 1\n ]\n]);\necho "Post créé avec l'ID : " . json_decode($response->getBody(), true)['id'];\n?>\nQu'avons-nous fait ? Simplement envoyé des requêtes HTTP. REST ne nécessite pas de bibliothèque spéciale — on peut même utiliser file_get_contents() avec un contexte, mais Guzzle offre une gestion pratique des erreurs, des middleware et un transfert en flux.
Quand REST n'est-il pas le meilleur choix ?
\nSi vous devez récupérer des données liées (par exemple, un post + l'auteur + les commentaires), REST vous obligera à faire plusieurs requêtes. C'est là que GraphQL entre en scène.
\n\nGraphQL en PHP : ne demandez que ce dont vous avez besoin
\nGraphQL est un langage de requête développé par Facebook. Le client décrit lui-même la structure de la réponse. Une seule requête — une seule réponse, sans excès ni manque de données.
\nComment fonctionne GraphQL en PHP ?
\nCôté serveur : la bibliothèque webonyx/graphql-php (installation : composer require webonyx/graphql-php). Côté client — une simple requête HTTP POST avec un corps JSON.
Exemple de requête GraphQL depuis PHP
\n<?php\nrequire 'vendor/autoload.php';\n\nuse GuzzleHttp\\Client;\n\n$client = new Client(['base_uri' => 'https://countries.trevorblades.com/']);\n\n$query = '\nquery GetCountry {\n country(code: "RU") {\n name\n capital\n currency\n languages {\n name\n }\n }\n}';\n\n$response = $client->post('', [\n 'json' => ['query' => $query]\n]);\n\n$data = json_decode($response->getBody(), true);\necho "Pays : " . $data['data']['country']['name'] . PHP_EOL;\necho "Capitale : " . $data['data']['country']['capital'] . PHP_EOL;\necho "Monnaie : " . $data['data']['country']['currency'] . PHP_EOL;\necho "Langues : ";\nforeach ($data['data']['country']['languages'] as $lang) {\n echo $lang['name'] . " ";\n}\n?>
Blogs
Book Recommendations
Lire aussi
Salaires des développeurs Go en Russie : aperçu du marché pour les avancés
C# en 2025 : aperçu des nouvelles fonctionnalités de .NET et du langage
Kotlin en 2025 : quoi de neuf ? Guide complet pour débutants
Microservices en TypeScript : architecture et pratique avancée
JavaScript en 2025 : quoi de neuf ? Aperçu pour les débutants