Heim > Backend-Entwicklung > PHP-Tutorial > Best Practices zur Verwendung der GraphQL-API in PHP

Best Practices zur Verwendung der GraphQL-API in PHP

WBOY
Freigeben: 2023-06-17 11:46:01
Original
2017 Leute haben es durchsucht

GraphQL ist eine leistungsstarke API-Abfragesprache, die den Datenerfassungs- und -bearbeitungsprozess erheblich vereinfachen kann. PHP als weit verbreitete und unterstützte Programmiersprache kann auch problemlos die GraphQL-API verwenden, um auf verschiedene Datenquellen zuzugreifen. PHP-Entwickler benötigen jedoch noch einige Anleitungen zu Best Practices für die Verwendung von GraphQL-APIs in PHP-Anwendungen. In diesem Artikel werden wir uns eingehend mit der Verwendung der GraphQL-API in PHP befassen.

1. Installieren und konfigurieren Sie die GraphQL-Bibliothek

Bevor wir beginnen, müssen wir eine PHP-GraphQL-Bibliothek herunterladen und installieren, damit unsere Anwendung mit dem GraphQL-Server kommunizieren kann. In PHP stehen einige beliebte GraphQL-Bibliotheken zur Auswahl, wie zum Beispiel webonyx/graphql-php und youshido/graphql. In diesem Artikel verwenden wir webonyx/graphql-php als Demonstration.

Zuerst müssen wir diese Bibliothek mit Composer installieren. Wenn Sie Composer nicht installiert haben, lesen Sie bitte die Dokumentation auf der offiziellen Website, um es zu installieren. Öffnen Sie dann ein Terminal und führen Sie den folgenden Befehl aus:

composer require webonyx/graphql-php
Nach dem Login kopieren

Nach der Installation müssen wir die GraphQL-Bibliothek so konfigurieren, dass sie mit dem GraphQL-Server kommunizieren kann. Wir müssen die URL des GraphQL-Servers angeben und die HTTP-Client-Implementierung auswählen. In diesem Beispiel verwenden wir die HTTP-Client-Implementierung von Guzzle. Hier ist der Beispielcode zum Konfigurieren der GraphQL-Bibliothek:

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);
Nach dem Login kopieren

Im obigen Code erstellen wir zunächst einen Guzzle-HTTP-Client und geben die URL des GraphQL-Servers an. Anschließend definieren wir eine Funktion, die einen GraphQL-Client erstellt, der den HTTP-Client instanziiert und an den GraphQL-Client übergibt. Schließlich haben wir ein GraphQL-Anforderungstransportobjekt zum Senden von GraphQL-Abfragen an den Remote-Server erstellt.

2. GraphQL-Abfragen schreiben

Nachdem wir verstanden haben, wie die GraphQL-Bibliothek für die Kommunikation mit dem Server verwendet wird, müssen wir GraphQL-Abfragen vorbereiten, um Daten abzurufen. Für jede anzufordernde GraphQL-Abfrage müssen wir eine Abfragezeichenfolge definieren und diese an den GraphQL-Client übergeben. Hier ist ein Beispiel für eine GraphQL-Abfragezeichenfolge:

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

In der obigen Abfrage haben wir eine Abfrage namens user definiert, die einen name-Parameter annimmt und eine Liste von IDs zurückgibt. Namen, E-Mails und Beiträge, die diesem Benutzer zugeordnet sind. Diese Abfrage gibt die folgenden Ergebnisse zurück: 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."
                }
            ]
        }
    }
}
Nach dem Login kopieren

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);
Nach dem Login kopieren

在上面的代码中,我们首先定义了一个名为$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'];
}
Nach dem Login kopieren

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

3. GraphQL-Abfrage senden

Nachdem wir nun die GraphQL-Abfragezeichenfolge bereit haben, können wir die GraphQL-Bibliothek verwenden, um die Abfrage an den Remote-Server zu senden. Hier ist der Beispielcode zum Senden einer Abfrage mithilfe der GraphQL-Bibliothek:

rrreee

Im obigen Code definieren wir zunächst ein Parameterarray mit dem Namen $variables und übergeben es an die GraphQL-Abfrage. Wir definieren außerdem eine Graphql-Abfragezeichenfolge und übergeben sie an den GraphQL-Client. Abschließend erstellen wir eine neue GraphQL-Anfrage und senden sie mithilfe des GraphQL-Transports. Der GraphQL-Transport fordert eine Abfragezeichenfolge und ein Variablenarray als Parameter an und gibt eine Antwort vom GraphQL-Server zurück. 🎜🎜4. Verarbeitung der GraphQL-Antwort 🎜🎜Sobald wir die GraphQL-Anfrage erfolgreich gesendet und die Antwort vom Server zurückgegeben haben, können wir die Antwort verarbeiten und die erforderlichen Daten daraus extrahieren. Hier ist der Beispielcode für die Verarbeitung einer GraphQL-Antwort: 🎜rrreee🎜 Im obigen Code extrahieren wir zunächst die GraphQL-Daten aus der Antwort und speichern sie in einer lokalen Variablen $data. Wir haben auch das „user“-Objekt aus den Daten extrahiert und es in der lokalen Variablen $user gespeichert. Schließlich haben wir die erforderlichen Eigenschaften wie ID, Name, E-Mail-Adresse und Liste der Beiträge aus dem Benutzerobjekt extrahiert und eine Schleife verwendet, um die Beiträge zu durchlaufen und zu extrahieren. 🎜🎜Fazit🎜🎜Jetzt haben wir die Best Practices für die Verwendung der GraphQL-API in PHP kennengelernt. Mithilfe der GraphQL-Bibliothek und des Guzzle-HTTP-Clients können wir problemlos mit dem GraphQL-Server kommunizieren und den Datenabruf und die Datenbearbeitung in PHP-Anwendungen implementieren. Unabhängig davon, ob Sie ein neues Projekt mit der GraphQL-API entwickeln oder eine vorhandene PHP-Anwendung aktualisieren, um die GraphQL-API zu unterstützen, empfehlen wir Ihnen dringend, die oben genannten Best Practices zu übernehmen, um sicherzustellen, dass Ihr Code sowohl leistungsfähig als auch wartbar ist und das beste Niveau erreichen kann. 🎜

Das obige ist der detaillierte Inhalt vonBest Practices zur Verwendung der GraphQL-API in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage