GraphQL est un langage de requête pour les API, qui permet aux clients d'interroger avec précision les données et d'éviter de gaspiller la bande passante du réseau et les ressources du serveur. Dans cet article, nous verrons comment créer une API GraphQL à l'aide de PHP.
Comment fonctionne l'API GraphQL
L'API GraphQL est basée sur un langage de requête. Le client envoie une demande de requête au serveur, et le serveur analyse la demande et renvoie les données correspondantes. Les demandes et les réponses sont envoyées et reçues au format de langage GraphQL.
L'API GraphQL prend également en charge les requêtes associées à plusieurs niveaux, dans lesquelles le client peut interroger certaines données, puis demander des données associées dans la même requête. Cela réduit considérablement la bande passante du réseau et la surcharge du serveur.
Il existe trois concepts principaux dans l'API GraphQL : les requêtes, les types et les analyseurs. Les requêtes sont des requêtes envoyées par le client, les types GraphQL sont les objets utilisés dans l'API et les résolveurs sont le code qui convertit les requêtes en réponses.
Création d'une API GraphQL
Nous implémenterons l'API GraphQL en utilisant PHP et utiliserons la bibliothèque webonyx/graphql-php pour créer et analyser des requêtes.
Tout d'abord, nous devons créer des types GraphQL, qui décrivent les objets dans l'API. Voici un exemple de type d'utilisateur :
use GraphQLTypeDefinitionType; use GraphQLTypeDefinitionObjectType; $userType = new ObjectType([ 'name' => 'User', 'fields' => [ 'id' => Type::int(), 'name' => Type::string(), 'email' => Type::string() ] ]);
Le code ci-dessus crée un type nommé User avec trois champs : identifiant, nom et email. Chaque champ a un type, Type::int() représente un type entier et Type::string() représente un type de chaîne.
Ensuite, nous devons créer un analyseur pour gérer la requête. Voici un exemple d'analyseur de requête utilisateur :
$rootValue = [ 'users' => [ ['id' => 1, 'name' => 'Alice', 'email' => 'alice@example.com'], ['id' => 2, 'name' => 'Bob', 'email' => 'bob@example.com'] ] ]; $resolver = function ($root, $args) { global $rootValue; if (isset($args['id'])) { foreach ($rootValue['users'] as $user) { if ($user['id'] == $args['id']) { return $user; } } } else { return $rootValue['users']; } };
Le code ci-dessus crée un tableau $rootValue, qui contient deux objets utilisateur. La fonction $resolver renverra les données correspondantes selon la requête envoyée par le client. Si la requête a un paramètre id, les informations utilisateur avec cet identifiant seront renvoyées, sinon toutes les informations utilisateur seront renvoyées.
Enfin, nous devons lier les types et résolveurs ci-dessus dans l'API GraphQL. Voici le code de liaison :
use GraphQLGraphQL; use GraphQLTypeSchema; $schema = new Schema([ 'query' => new ObjectType([ 'name' => 'Query', 'fields' => [ 'user' => [ 'type' => $userType, 'args' => ['id' => Type::int()], 'resolve' => $resolver ], 'users' => [ 'type' => Type::listOf($userType), 'resolve' => $resolver ] ] ]) ]); if (!empty($_POST['query'])) { $result = GraphQL::executeQuery($schema, $_POST['query']); echo json_encode($result->toArray()); }
Le code ci-dessus lie le type d'utilisateur et le résolveur dans l'API GraphQL et crée un objet de requête. Dans l'objet de requête, nous pouvons définir plusieurs requêtes telles que « utilisateur » et « utilisateurs ». Chaque requête doit spécifier son type et son analyseur, qui seront appelés lorsqu'une requête est détectée.
Ensuite, nous devons envoyer la requête dans l'API via une requête POST et analyser les données de réponse. En prenant le code ci-dessus comme exemple, nous obtiendrons l'objet JSON de réponse de l'API et le sortirons directement.
Résumé
Dans cet article, nous avons expliqué comment créer une API GraphQL à l'aide de PHP. Nous avons expliqué le fonctionnement de l'API GraphQL et fourni des exemples de code pour montrer comment créer des types, des résolveurs et les lier dans l'API. Nous utilisons également la bibliothèque webonyx/graphql-php pour simplifier la création et l'analyse de l'API. Si vous souhaitez en savoir plus sur GraphQL, veuillez vous référer à la documentation officielle de GraphQL.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!