Maison  >  Article  >  développement back-end  >  Comment gérer l'API GraphQL dans le développement d'API PHP

Comment gérer l'API GraphQL dans le développement d'API PHP

WBOY
WBOYoriginal
2023-06-17 13:03:11817parcourir

Avec le développement continu des applications Web, l'utilisation de l'API (Application Programming Interface) devient de plus en plus courante. L'API, en tant que cœur des applications Web, permet à différentes applications de communiquer entre elles et de partager des données. Dans le développement PHP, l'API GraphQL est devenue une méthode de développement de plus en plus populaire, qui peut être plus flexible et efficace que l'API RESTful traditionnelle.

GraphQL est un langage de requête API développé par Facebook, qui permet au client d'obtenir les données précises requises auprès du serveur. Comparé aux API RESTful traditionnelles, GraphQL est plus flexible et efficace, et peut réduire considérablement le volume de communication entre l'application et le serveur. Dans cet article, nous explorerons comment développer et traiter des API GraphQL en PHP.

La première étape consiste à comprendre le fonctionnement de l'API GraphQL. Le cœur de l'API GraphQL est un schéma (schéma), qui définit les types de données et les opérations interrogeables et modifiables. Le client peut utiliser le langage de requête GraphQL pour soumettre une requête au serveur afin d'interroger les données requises. Le serveur interprète l'opération selon le schéma GraphQL et renvoie les données requises par le client. graphql-php est une bibliothèque PHP qui peut nous aider à développer l'API GraphQL plus facilement.

La première étape du développement d'une API GraphQL consiste à créer un schéma. Nous devons définir un schéma, qui contient des types de données et des opérations interrogeables et modifiables. Le schéma contient généralement des objets de requête, des objets de modification, des objets d'entrée et des types scalaires.

Parmi eux, l'objet de requête représente les données que le client peut interroger ; l'objet de modification représente les données que le client peut modifier ; l'objet d'entrée représente les données que le client peut soumettre au serveur ; les types scalaires incluent des chaînes, des booléens ; valeurs, entiers et nombres à virgule flottante et autres types de données de base.

Dans le processus de création du schéma, nous devons spécifier le type et les paramètres de chaque objet et champ. Par exemple, ce qui suit est un objet de requête simple :

type Query {
  hello: String!
}

Cet objet de requête indique qu'un champ bonjour de type chaîne peut être interrogé. Le point d'exclamation indique que ce champ est obligatoire et ne peut pas renvoyer null.

Ensuite, nous devons définir un résolveur (analyseur), qui est responsable du traitement de l'acquisition des données et des modifications pour chaque objet ou champ. Le résolveur est une fonction de rappel PHP qui doit recevoir la requête et les informations contextuelles, puis renvoyer les résultats de la requête. Par exemple, pour le champ hello défini ci-dessus, on peut créer un Resolver :

$resolvers = [
     'Query' => [
          'hello' => function () {
                return 'Hello, World!';
          },
     ],
];

Ce Resolver renvoie directement la chaîne "Hello, World!". Nous devons lier ce résolveur au schéma afin que les demandes de requête puissent être traitées.

Ensuite, nous pouvons utiliser la classe GraphQL dans la bibliothèque graphql-php pour écrire un processeur de requête HTTP afin de gérer la requête de requête du client. Le gestionnaire de requêtes HTTP reçoit la requête, analyse la requête et les modifications apportées à la requête dans le langage de requête GraphQL et les transmet au schéma.

<?php
require_once __DIR__ . '/vendor/autoload.php';

use GraphQLGraphQL;
use GraphQLTypeSchema;
use function GraphQLTypealidate;

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

try {
    $rawInput = file_get_contents('php://input');
    $input = json_decode($rawInput, true);
    $query = isset($input['query']) ? $input['query'] : null;
    $variableValues = isset($input['variables']) ? $input['variables'] : null;
    $operationName = isset($input['operationName']) ? $input['operationName'] : null;

    $result = GraphQL::executeQuery($schema, $query, null, null, $variableValues, $operationName);
    $output = $result->toArray();
} catch (Exception $e) {
    $output = [
        'error' => [
            'message' => $e->getMessage()
        ]
    ];
}

header('Content-Type: application/json; charset=UTF-8');
echo json_encode($output);

Enfin, nous devons également réfléchir à la manière de sécuriser l'API GraphQL. L'API GraphQL permet aux clients d'interroger et de modifier les données de manière flexible, certaines mesures sont donc nécessaires pour éviter les abus. Nous pouvons garantir la sécurité et la légalité de l'API grâce à l'authentification et à l'autorisation.

En résumé, le développement de l'API GraphQL nous oblige à définir un schéma, à écrire un résolveur et à créer un gestionnaire de requêtes HTTP. L'API GraphQL présente les avantages d'une grande flexibilité et d'une grande efficacité. Par conséquent, si vous avez besoin de créer une API flexible et efficace dans le développement PHP, l'API GraphQL sera sans aucun doute un bon choix.

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