Heim  >  Artikel  >  Backend-Entwicklung  >  Erfahren Sie, wie Sie mit PHP eine GraphQL-API erstellen: Schritte zum Erstellen einer API-Schnittstelle

Erfahren Sie, wie Sie mit PHP eine GraphQL-API erstellen: Schritte zum Erstellen einer API-Schnittstelle

WBOY
WBOYOriginal
2024-01-22 11:24:07581Durchsuche

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

GraphQL ist eine Abfragesprache für APIs, die es Clients ermöglicht, Daten genau abzufragen und die Verschwendung von Netzwerkbandbreite und Serverressourcen zu vermeiden. In diesem Artikel besprechen wir, wie man mit PHP eine GraphQL-API erstellt.

So funktioniert die GraphQL-API

Die GraphQL-API basiert auf der Abfragesprache. Der Client sendet eine Abfrageanforderung an den Server, und der Server analysiert die Anforderung und gibt die entsprechenden Daten zurück. Anfragen und Antworten werden im GraphQL-Sprachformat gesendet und empfangen.

GraphQL API unterstützt auch mehrstufige zugehörige Abfragen, bei denen der Client einige Daten abfragen und dann verwandte Daten in derselben Abfrage anfordern kann. Dies reduziert die Netzwerkbandbreite und den Server-Overhead erheblich.

Es gibt drei Hauptkonzepte in der GraphQL-API: Abfragen, Typen und Parser. Abfragen sind vom Client gesendete Anfragen, GraphQL-Typen sind die in der API verwendeten Objekte und Resolver sind der Code, der Anfragen in Antworten umwandelt.

Erstellen einer GraphQL-API

Wir werden die GraphQL-API mit PHP implementieren und die Bibliothek webonyx/graphql-php verwenden, um Abfragen zu erstellen und zu analysieren.

Zuerst müssen wir einige GraphQL-Typen erstellen, die die Objekte in der API beschreiben. Hier ist ein Beispiel für einen Benutzertyp:

use GraphQLTypeDefinitionType;
use GraphQLTypeDefinitionObjectType;

$userType = new ObjectType([
    'name' => 'User',
    'fields' => [
        'id' => Type::int(),
        'name' => Type::string(),
        'email' => Type::string()
    ]
]);

Der obige Code erstellt einen Typ namens „Benutzer“ mit drei Feldern: ID, Name und E-Mail. Jedes Feld hat einen Typ, Type::int() repräsentiert einen Integer-Typ und Type::string() repräsentiert einen String-Typ.

Als nächstes müssen wir einen Parser erstellen, um die Abfrage zu verarbeiten. Hier ist ein Beispiel für einen Benutzerabfrageparser:

$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'];
    }
};

Der obige Code erstellt ein $rootValue-Array, das zwei Benutzerobjekte enthält. Die Funktion $resolver gibt die entsprechenden Daten entsprechend der vom Client gesendeten Anfrage zurück. Wenn die Anfrage einen ID-Parameter hat, werden die Benutzerinformationen mit dieser ID zurückgegeben, andernfalls werden alle Benutzerinformationen zurückgegeben.

Schließlich müssen wir die oben genannten Typen und Resolver in die GraphQL-API einbinden. Hier ist der Bindungscode:

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());
}

Der obige Code bindet den Benutzertyp und den Resolver in die GraphQL-API und erstellt ein Abfrageobjekt. Im Abfrageobjekt können wir mehrere Abfragen definieren, z. B. „Benutzer“ und „Benutzer“. Für jede Abfrage müssen der Typ und der Parser angegeben werden, der aufgerufen wird, wenn eine Abfrage erkannt wird.

Dann müssen wir die Abfrage über eine POST-Anfrage an die API senden und die Antwortdaten analysieren. Am Beispiel des obigen Codes erhalten wir das Antwort-JSON-Objekt von der API und geben es direkt aus.

Zusammenfassung

In diesem Artikel haben wir behandelt, wie man eine GraphQL-API mit PHP erstellt. Wir haben die Funktionsweise der GraphQL-API besprochen und Beispielcode bereitgestellt, um zu demonstrieren, wie Typen und Resolver erstellt und in die API eingebunden werden. Wir verwenden auch die Bibliothek webonyx/graphql-php, um das Erstellen und Parsen der API zu vereinfachen. Wenn Sie mehr über GraphQL erfahren möchten, lesen Sie bitte die offizielle GraphQL-Dokumentation.

Das obige ist der detaillierte Inhalt vonErfahren Sie, wie Sie mit PHP eine GraphQL-API erstellen: Schritte zum Erstellen einer API-Schnittstelle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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