API GraphQL avec PHP : tutoriel pas à pas pour débutants

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

Introduction à GraphQL et PHP

GraphQL est un langage de requête pour les API et un environnement d'exécution pour exécuter ces requêtes avec des données existantes. Contrairement à REST, où vous obtenez une structure de réponse fixe, GraphQL permet au client de demander uniquement les données dont il a réellement besoin. Cela rend l'API plus flexible et efficace.

Dans ce tutoriel, nous allons créer une API GraphQL simple en PHP à partir de zéro. Vous apprendrez à installer les bibliothèques nécessaires, à définir un schéma, à écrire des résolveurs et à traiter les requêtes. L'article est destiné aux développeurs débutants, familiers avec les bases de PHP et des bases de données (par exemple, MySQL ou SQLite).

Nous utiliserons la bibliothèque webonyx/graphql-php — c'est le package le plus populaire et le plus stable pour implémenter GraphQL en PHP. À la fin, vous pourrez lancer votre propre serveur GraphQL et y envoyer des requêtes via n'importe quel client HTTP (par exemple, cURL ou Insomnia).



Installation et configuration du projet

Étape 1 : Création du projet et installation des dépendances

Pour commencer, créons un nouveau répertoire pour le projet et initialisons Composer :

mkdir graphql-php-tutorialcd graphql-php-tutorialcomposer init

Ensuite, installons la bibliothèque webonyx/graphql-php :

composer require webonyx/graphql-php

Nous aurons également besoin d'un serveur HTTP compatible PSR-7. Pour simplifier, utilisons le serveur PHP intégré et la bibliothèque guzzlehttp/psr7 pour gérer les requêtes et les réponses :

composer require guzzlehttp/psr7


Étape 2 : Structure du projet

Créez la structure de fichiers suivante :

  • index.php — point d'entrée de l'application
  • schema.graphql — fichier avec la définition du schéma GraphQL
  • resolvers.php — fichier avec les fonctions de résolveur
  • data.php — simulation de base de données (tableau de données)


Définition du schéma GraphQL

Étape 3 : Rédaction du schéma

Le schéma est une description des types de données et des opérations disponibles (requêtes et mutations). Créons un schéma simple pour gérer une liste de livres. Ouvrez le fichier schema.graphql et insérez le code suivant :

type Book {    id: ID!    title: String!    author: String!    year: Int}

type Query { books: [Book] book(id: ID!): Book}

type Mutation { addBook(title: String!, author: String!, year: Int): Book deleteBook(id: ID!): Book}

Ici, nous avons défini :

  • Book — type de données avec les champs id, title, author et year.
  • Query — opérations pour obtenir des données : liste de tous les livres et livre par ID.
  • Mutation — opérations pour modifier les données : ajout et suppression d'un livre.


Étape 4 : Préparation des données et des résolveurs

Créez le fichier data.php avec un tableau de livres :

<?php$books = [    1 => ['id' => 1, 'title' => 'Guerre et Paix', 'author' => 'Léon Tolstoï', 'year' => 1869],    2 => ['id' => 2, 'title' => 'Crime et Châtiment', 'author' => 'Fiodor Dostoïevski', 'year' => 1866],];

Écrivons maintenant les résolveurs dans le fichier resolvers.php. Les résolveurs sont des fonctions qui renvoient les données pour chaque champ du schéma.

<?phprequire 'data.php';

function resolveBooks() { global $books; return array_values($books);}

function resolveBook($root, $args) { global $books; return $books[$args['id']] ?? null;}

function resolveAddBook($root, $args) { global $books; $newId = count($books) + 1; $newBook = [ 'id' => $newId, 'title' => $args['title'], 'author' => $args['author'], 'year' => $args['year'] ?? null ]; $books[$newId] = $newBook; return $newBook;}

function resolveDeleteBook($root, $args) { global $books;

Blogs

Book Recommendations