Maison  >  Article  >  développement back-end  >  Comment créer une interface API à l'aide de GraphQL en PHP

Comment créer une interface API à l'aide de GraphQL en PHP

王林
王林original
2023-05-10 22:31:571487parcourir

GraphQL est un langage de requête API émergent qui peut spécifier avec précision les données qui doivent être renvoyées sur le client, réduisant ainsi la transmission de données inutiles par le serveur et améliorant l'efficacité des requêtes réseau et de la transmission de données. Comparé à l'API de style RESTful traditionnelle, GraphQL est plus flexible et efficace. Dans cet article, nous explorerons comment utiliser GraphQL en PHP pour créer des interfaces API.

  1. Installer la bibliothèque GraphQL

Avant de commencer à utiliser GraphQL, vous devez installer les bibliothèques liées à GraphQL. En PHP, la bibliothèque GraphQL la plus populaire est webonyx/graphql-php. Nous pouvons l'installer via composer. L'opération spécifique est la suivante :

$ composer require webonyx/graphql-php
  1. Create Schema

Dans GraphQL, le schéma définit le modèle de données et instructions de requête . Le schéma est la partie centrale de GraphQL. En définissant le schéma, nous pouvons définir le comportement et la forme des données de l'API. GraphQL-php utilise la classe GraphQLTypeSchema pour créer le schéma. Par exemple, ce qui suit est une définition de schéma simple :

use GraphQLTypeDefinitionType;
use GraphQLTypeSchema;

$queryType = new GraphQLTypeDefinitionObjectType([
    'name' => 'Query',
    'fields' => [
        'message' => [
            'type' => Type::string(),
            'resolve' => function() {
                return 'Hello, World!';
            }
        ],
    ]
]);

$schema = new Schema([
    'query' => $queryType
]);

Dans cet exemple, nous définissons un type de requête qui contient un champ. Le champ s'appelle message et renvoie une chaîne Hello, World !. Dans le schéma, nous définissons et exportons le queryType, et utilisons ce type pour spécifier l'entrée de requête du schéma.

  1. Gestion des requêtes GraphQL

Une fois le schéma défini, vous pouvez commencer à traiter les requêtes GraphQL. Nous pouvons utiliser la bibliothèque PHP de GraphQL pour gérer les requêtes. Parmi eux, la classe GraphQLServerStandardServer assure l'implémentation du serveur et achemine la requête vers le gestionnaire de schéma pour obtenir le résultat de la réponse. Les étapes de base pour gérer les requêtes GraphQL sont les suivantes :

  • Obtenir les paramètres de la requête
  • Analyser les paramètres de la requête dans la requête GraphQL
  • Exécuter la requête #🎜 🎜#
  • Retour des résultats
Ce qui suit est un exemple de code de base pour gérer les requêtes GraphQL :

use GraphQLServerStandardServer;

// 获取请求参数
$request = json_decode(file_get_contents('php://input'), true);

// 将请求参数解析为GraphQL查询
$query = isset($request['query']) ? $request['query'] : null;
$variables = isset($request['variables']) ? $request['variables'] : null;

// 执行请求
$server = new StandardServer([
    'schema' => $schema,
    'debug' => true,
]);
$result = $server->executePsrRequest(Request::fromGlobals(), $query, [], $variables);

// 返回结果
echo json_encode($result);

Dans cet exemple, nous obtenons d'abord le paramètre de requête. Les paramètres de la requête sont ensuite analysés dans une requête GraphQL et exécutés via StandardServer. Enfin, nous sérialisons le résultat du retour au format JSON et le renvoyons au client.

    Fonctionnalités, autorisations et authentification
Afin d'augmenter les fonctionnalités de l'API GraphQL, nous pouvons ajouter des "features" (features) et "autorisations" (autorisations). La prise en charge de ces fonctionnalités par GraphQL est assez puissante. Par exemple, vous pouvez utiliser la « vérification de type forcée » de GraphQL pour vous assurer que chaque champ a le type de données correct. De plus, vous pouvez utiliser la « validation de schéma » de GraphQL pour vous assurer que chaque champ existe et est conforme au type que nous avons défini.

Dans le même temps, afin de protéger la sécurité des données, nous devrons peut-être ajouter des « autorisations » à l'API. « Autorisation » consiste à vérifier si l'utilisateur est autorisé à accéder à des données spécifiques dans la base de données. GraphQL propose diverses façons de mettre en œuvre les exigences de contrôle des autorisations. Par exemple, lors de la définition du schéma, vous pouvez définir un puissant contrôle d'accès basé sur les rôles.

L'authentification fait partie de l'authentification des applications Web qui est utilisée pour détecter l'identité de l'utilisateur. L'authentification est également prise en charge dans GraphQL. Lors du traitement des demandes, nous pouvons assurer la sécurité de l'API en vérifiant si l'utilisateur dispose d'une méthode d'authentification valide. Lors de la mise en œuvre de l'authentification, nous pouvons également transmettre les informations d'identité de l'utilisateur en paramètre à chaque requête.

    Utilisation du contexte
GraphQL introduit le concept de « contexte » pour résoudre le problème de l'état temporaire ou des propriétés requises lors de l'accès ou de la mise à jour des données . Un contexte est généralement un magasin ou un cache persistant connecté à une opération GraphQL, mais peut également contenir des informations utiles arbitraires, telles que des données d'authentification pour l'utilisateur actuel et des données de requête.

En PHP, on peut transmettre des données à chaque requête en ajoutant des paramètres dans le contexte. Par exemple, voici un exemple basique :

$context = [
    'db' => $db,
    'currentUser' => $currentUser,
];

$server = new StandardServer([
    'schema' => $schema,
    'context' => $context,
]);

$result = $server->processPsrRequest($request, $response);

Dans cet exemple, nous définissons une variable appelée "context" et ajoutons la variable au gestionnaire de requêtes. De cette façon, chaque requête peut accéder à ce contexte et utiliser les informations qu'il contient.

Summary

Pour utiliser GraphQL pour créer une interface API en PHP, nous devons installer la bibliothèque GraphQL, définir le schéma, gérer les requêtes GraphQL, implémenter les autorisations et l'authentification, et utiliser le contexte pour transmettre des informations. La véritable valeur de GraphQL est qu'il fournit un moyen flexible et efficace d'interroger et d'exploiter les données, aidant ainsi les développeurs à créer des API plus élégantes et efficaces. J'espère que cet article pourra aider les lecteurs à mieux comprendre, apprendre GraphQL et l'utiliser pour créer des API étonnantes en PHP.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn