Maison développement back-end tutoriel php Apprenez à créer une API GraphQL à l'aide de PHP : étapes pour créer une interface API

Apprenez à créer une API GraphQL à l'aide de PHP : étapes pour créer une interface API

Jan 22, 2024 am 11:24 AM
php api graphql

PHP API接口:如何创建GraphQL API?

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!

Déclaration de ce site Web
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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment utiliser Ajax avec PHP Comment utiliser Ajax avec PHP Aug 29, 2025 am 08:58 AM

AjaxwithphPenablesDynamicwebappsBySendingasynchronousRequestsWithoutPageReloads.1.CreateHtmlWithJavaScriptUsingFetch () ToSendd ATA.2.BuildaphPScriptToprocessSpostDataAndreturn Responses.3.UsejsonforComplexDatahandling.4.

Comment obtenir la date et l'heure actuelles en PHP? Comment obtenir la date et l'heure actuelles en PHP? Aug 31, 2025 am 01:36 AM

Usedate ('y-m-dh: i: s') withdate_default_timezone_set () togetcurrentDateAndtimeInphp, assurant à la réalisation des éventualités de latTheDesiredTimeZonElike'America / new_york'beforCallingDate ().

Comment définir un niveau de rapport d'erreur en PHP? Comment définir un niveau de rapport d'erreur en PHP? Aug 31, 2025 am 06:48 AM

UseError_Reportting () TOSETERRORLEVELSINPHP, telase_allfordEvelovegor0ForProduction, etControldisplayorLoggingViaini_Set () ToenhancedEbuggingandSecurity.

Comment travailler avec des horodatages en PHP? Comment travailler avec des horodatages en PHP? Aug 31, 2025 am 08:55 AM

Utilisez l'heure () pour obtenir l'horodatage actuel, Date () Formats l'heure, et StrtoTime () convertit la chaîne de date en horodatage. Il est recommandé que la classe DateTime gère les opérations de fuseau horaire et de date pour des opérations complexes.

Comment obtenir le nom de classe d'un objet en PHP? Comment obtenir le nom de classe d'un objet en PHP? Sep 01, 2025 am 04:48 AM

Useget_class ($ objet) togetTheClassNameAtRuntime; 2.UsemycLass :: classforcompile-timeclassnameStringings, en particulier avec des espaces; 3.InsideAclassMethod, get_class ($ this) returnshecurrentObject'sclassName.

Comment gérer la validation du formulaire en PHP? Comment gérer la validation du formulaire en PHP? Aug 30, 2025 am 01:17 AM

Validerin Putout filter_var () format forcorrect, checkRequiredFieldsWithEmpty (), SanitizeoutTViAhtmlSpecialCars () Aredstatigs, collectorsinanarray, redivisplaywithvalues, andredirectaftefrecesseuSubsumventResumsemison.

Entrez la touche ne fonctionnant pas sur mon clavier Entrez la touche ne fonctionnant pas sur mon clavier Aug 30, 2025 am 08:36 AM

Tout d'abord, CheckForPhysicsUesuesLikeeDebrisordAmageAndCleantheyBoardOrtestwithanExternalone; 2.TestertheenterkeyIndifferentAppstodetermineiftheissueIssoftware-spécifique; 3.restartyourcomputertoresolvetetemporaryglitches; 4.DisableStickykeys, Filterkeys, Ortogglek

Quelle est la différence entre == et === dans PHP? Quelle est la différence entre == et === dans PHP? Sep 01, 2025 am 07:50 AM

=== Les valeurs et les types sont nécessaires pour être les mêmes, == SEUX SEMANTS SIMITE SI les valeurs sont égales. Par exemple, 5 == "5" est vrai, mais 5 === "5" est faux, selon le type. === Pas de conversion de type, plus sécurisée et stricte.

See all articles