Maison  >  Article  >  développement back-end  >  Meilleures pratiques pour utiliser l'API GraphQL en PHP

Meilleures pratiques pour utiliser l'API GraphQL en PHP

WBOY
WBOYoriginal
2023-06-17 11:32:501942parcourir

GraphQL est un langage de requête API puissant qui peut grandement simplifier le processus d'acquisition et de manipulation de données. PHP, en tant que langage de programmation largement utilisé et pris en charge, peut également facilement utiliser l'API GraphQL pour accéder à diverses sources de données. Cependant, les développeurs PHP ont encore besoin de conseils sur les meilleures pratiques d'utilisation des API GraphQL dans les applications PHP. Dans cet article, nous examinerons en profondeur comment utiliser l'API GraphQL en PHP.

1. Installer et configurer la bibliothèque GraphQL

Avant de commencer, nous devons télécharger et installer une bibliothèque PHP GraphQL pour permettre à notre application de communiquer avec le serveur GraphQL. En PHP, il existe des bibliothèques GraphQL populaires parmi lesquelles choisir, telles que webonyx/graphql-php et youshido/graphql. Dans cet article, nous utiliserons webonyx/graphql-php comme démonstration.

Tout d'abord, nous devons installer cette bibliothèque à l'aide de Composer. Si vous n'avez pas installé Composer, veuillez consulter la documentation sur le site officiel pour l'installer. Ensuite, ouvrez un terminal et exécutez la commande suivante :

composer require webonyx/graphql-php

Une fois installée, nous devons configurer la bibliothèque GraphQL pour qu'elle puisse communiquer avec le serveur GraphQL. Nous devons spécifier l'URL du serveur GraphQL et choisir l'implémentation du client HTTP. Dans cet exemple, nous utiliserons l'implémentation du client HTTP Guzzle. Voici l'exemple de code pour configurer la bibliothèque GraphQL :

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

use GuzzleHttpClient;
use GraphQLClientExceptionRequestError;
use GraphQLClientResponse;

$http = new Client([
    'base_uri' => 'https://example.com/graphql',
    'headers' => [
        'Content-Type' => 'application/json',
        'Accept' => 'application/json',
    ],
]);

$graphql = new GraphQLClientHttpClientHttpClient($http, function (Response $response, RequestError $errors) {
    if ($errors) {
        throw $errors;
    }
});

$transport = new GraphQLClientTransport($graphql);

Dans le code ci-dessus, nous créons d'abord un client HTTP Guzzle et spécifions l'URL du serveur GraphQL. Nous définissons ensuite une fonction qui crée un client GraphQL, qui instancie le client HTTP et le transmet au client GraphQL. Enfin, nous avons créé un objet de transport de requêtes GraphQL pour envoyer des requêtes GraphQL au serveur distant.

2. Écrire des requêtes GraphQL

Après avoir compris comment utiliser la bibliothèque GraphQL pour communiquer avec le serveur, nous devons préparer des requêtes GraphQL pour obtenir des données. Pour chaque requête GraphQL qui doit être demandée, nous devons définir une chaîne de requête et la transmettre au client GraphQL. Voici un exemple de chaîne de requête GraphQL :

$query = <<<'GRAPHQL'
query ($name: String!) {
    user(name: $name) {
        id
        name
        email
        posts {
            id
            title
            content
        }
    }
}
GRAPHQL;

Dans la requête ci-dessus, nous avons défini une requête nommée user qui prend un paramètre name et renvoie une liste d'identifiants, noms, e-mails et publications associés à cet utilisateur. Cette requête renverra les résultats suivants : user的查询,它需要一个name参数并返回与该用户相关的ID,名称,电子邮件和帖子列表。此查询会返回如下结果:

{
    "data": {
        "user": {
            "id": "1",
            "name": "John Doe",
            "email": "johndoe@example.com",
            "posts": [
                {
                    "id": "1",
                    "title": "Introduction to GraphQL",
                    "content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
                },
                {
                    "id": "2",
                    "title": "GraphQL vs. REST",
                    "content": "Sed ut perspiciatis unde omnis iste natus error sit voluptatem."
                }
            ]
        }
    }
}

3.发送GraphQL查询

现在我们已经准备好了GraphQL查询字符串,可以使用GraphQL库将查询发送到远程服务器。以下是使用GraphQL库发送查询的示例代码:

$variables = ['name' => 'John Doe'];

$query = <<<'GRAPHQL'
    query ($name: String!) {
        user(name: $name) {
            id
            name
            email
            posts {
                id
                title
                content
            }
        }
    }
GRAPHQL;

$request = new GraphQLClientRequest($query, $variables);
$response = $transport->send($request);

在上面的代码中,我们首先定义了一个名为$variables的参数数组,并将其传递给GraphQL查询。我们还定义了一个Graphql查询字符串,并将其传递给GraphQL客户端。最后,我们创建一个新的GraphQL请求并使用GraphQL传输发送它。GraphQL传输会将查询字符串和变量数组作为参数进行请求,并从GraphQL服务器返回响应。

4.处理GraphQL响应

一旦我们成功发送了GraphQL查询并从服务器返回响应,我们就可以处理响应并从中提取所需的数据。以下是处理GraphQL响应的示例代码:

$data = $response->getData();

$user = $data['user'];

$id = $user['id'];
$name = $user['name'];
$email = $user['email'];
$posts = $user['posts'];

foreach ($posts as $post) {
    $postId = $post['id'];
    $postTitle = $post['title'];
    $postContent = $post['content'];
}

在上面的代码中,我们首先从响应中提取GraphQL数据,并将其存储在本地变量$data中。我们还从数据中提取了'user'对象,并将其存储在本地变量$userrrreee

3. Envoyer la requête GraphQL

Maintenant que la chaîne de requête GraphQL est prête, nous pouvons utiliser la bibliothèque GraphQL pour envoyer la requête au serveur distant. Voici l'exemple de code pour envoyer une requête à l'aide de la bibliothèque GraphQL :

rrreee

Dans le code ci-dessus, nous définissons d'abord un tableau de paramètres appelé $variables et le transmettons à la requête GraphQL. Nous définissons également une chaîne de requête Graphql et la transmettons au client GraphQL. Enfin, nous créons une nouvelle requête GraphQL et l'envoyons à l'aide du transport GraphQL. Le transport GraphQL demandera une chaîne de requête et un tableau de variables comme paramètres et renverra une réponse du serveur GraphQL. 🎜🎜4. Traitement de la réponse GraphQL 🎜🎜Une fois que nous avons envoyé avec succès la requête GraphQL et renvoyé la réponse du serveur, nous pouvons traiter la réponse et en extraire les données requises. Voici l'exemple de code pour gérer une réponse GraphQL : 🎜rrreee🎜 Dans le code ci-dessus, nous extrayons d'abord les données GraphQL de la réponse et les stockons dans une variable locale $data. Nous avons également extrait l'objet 'user' des données et l'avons stocké dans la variable locale $user. Enfin, nous avons extrait les propriétés requises telles que l'ID, le nom, l'e-mail et la liste des publications de l'objet utilisateur et avons utilisé une boucle pour parcourir et extraire les publications. 🎜🎜Conclusion🎜🎜Maintenant, nous avons appris les meilleures pratiques sur la façon d'utiliser l'API GraphQL en PHP. Grâce à la bibliothèque GraphQL et au client HTTP Guzzle, nous pouvons facilement communiquer avec le serveur GraphQL et implémenter la récupération et la manipulation de données dans les applications PHP. Que vous développiez un nouveau projet à l'aide de l'API GraphQL ou que vous mettiez à jour une application PHP existante pour prendre en charge l'API GraphQL, nous vous invitons à adopter les meilleures pratiques ci-dessus pour garantir que votre code est à la fois performant et maintenable. 🎜

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