GraphQL API avec PHP : tutoriel pratique étape par étape

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

GraphQL API avec PHP : tutoriel pratique étape par étape



GraphQL est un langage de requêtes pour API qui permet aux clients d'obtenir uniquement les données dont ils ont réellement besoin. Contrairement à REST, où chaque endpoint renvoie une structure fixe, GraphQL offre flexibilité et efficacité. Dans ce tutoriel, nous allons créer une API GraphQL complète en PHP à partir de zéro — de l'installation des bibliothèques au traitement des requêtes et des mutations.



Pourquoi GraphQL et PHP forment-ils une excellente paire ?

PHP reste l'un des langages les plus populaires pour le développement côté serveur. Avec la bibliothèque webonyx/graphql-php, vous pouvez facilement intégrer GraphQL dans n'importe quel projet — d'un simple blog à un CRM complexe. Les principaux avantages :

  • Flexibilité des requêtes — le client décide lui-même quels champs obtenir.
  • Point d'entrée unique — au lieu de multiples endpoints, un seul /graphql.
  • Typage strict — le schéma définit tous les types et relations.
  • Pratique pour le frontend — React, Vue et autres frameworks fonctionnent facilement avec GraphQL.


Implémentation étape par étape d'une API GraphQL en PHP



1. Installation et configuration de l'environnement

Pour commencer, créons un nouveau projet et installons la bibliothèque principale via Composer :

composer require webonyx/graphql-php

Nous aurons également besoin d'un gestionnaire HTTP compatible PSR-7. Utilisons guzzlehttp/psr7 et nyholm/psr7-server :

composer require guzzlehttp/psr7 nyholm/psr7-server

Créons la structure de dossiers de base :

project/├── src/│   ├── Schema/│   ├── Resolvers/│   └── Types/├── public/│   └── index.php├── vendor/└── composer.json


2. Définition du schéma GraphQL

Le schéma est le cœur de l'API GraphQL. Il décrit les types de données et les opérations disponibles. Créons le fichier src/Schema/Schema.php :

<?phpnamespace App\\Schema;

use GraphQL\\Type\\Definition\\ObjectType;use GraphQL\\Type\\Definition\\Type;use GraphQL\\Type\\Schema as GraphQLSchema;

class Schema{ public static function build(): GraphQLSchema { // Type "User" $userType = new ObjectType([ 'name' => 'User', 'fields' => [ 'id' => Type::int(), 'name' => Type::string(), 'email' => Type::string(), ] ]);

// Type "Query" — requête racine $queryType = new ObjectType([ 'name' => 'Query', 'fields' => [ 'user' => [ 'type' => $userType, 'args' => [ 'id' => Type::nonNull(Type::int()) ], 'resolve' => function ($root, $args) { // Ici se trouvera le résolveur return UserResolver::getUser($args['id']); } ], 'users' => [ 'type' => Type::listOf($userType), 'resolve' => function () { return UserResolver::getAllUsers(); } ] ] ]);

// Type "Mutation" — mutation racine $mutationType = new ObjectType([ 'name' => 'Mutation', 'fields' => [ 'createUser' => [ 'type' => $userType, 'args' => [ 'name' => Type::nonNull(Type::string()), 'email' => Type::nonNull(Type::string()) ], 'resolve' => function ($root, $args) { return UserResolver::createUser($args['name'], $args['email']); } ] ] ]);

return new GraphQLSchema([

Blogs

Book Recommendations