GraphQL API mit PHP: Schritt-für-Schritt-Tutorial in der Praxis

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

GraphQL API mit PHP: Schritt-für-Schritt-Tutorial in der Praxis



GraphQL ist eine Abfragesprache für APIs, die es Clients ermöglicht, nur die Daten zu erhalten, die sie wirklich benötigen. Im Gegensatz zu REST, wo jeder Endpunkt eine feste Struktur zurückgibt, bietet GraphQL Flexibilität und Effizienz. In diesem Tutorial erstellen wir eine vollständige GraphQL API mit PHP von Grund auf – von der Installation der Bibliotheken bis zur Verarbeitung von Abfragen und Mutationen.



Warum GraphQL und PHP ein hervorragendes Paar sind

PHP bleibt eine der beliebtesten Sprachen für die Serverentwicklung. Mit der Bibliothek webonyx/graphql-php können Sie GraphQL problemlos in jedes Projekt integrieren – von einem einfachen Blog bis zu einer komplexen CRM. Die Hauptvorteile:

  • Flexibilität der Abfragen – der Client entscheidet selbst, welche Felder abgerufen werden.
  • Ein einziger Einstiegspunkt – statt mehrerer Endpunkte nur ein /graphql.
  • Strenge Typisierung – das Schema definiert alle Typen und Beziehungen.
  • Bequemlichkeit für das Frontend – React, Vue und andere Frameworks arbeiten problemlos mit GraphQL.


Schrittweise Implementierung einer GraphQL API mit PHP



1. Installation und Einrichtung der Umgebung

Zunächst erstellen wir ein neues Projekt und installieren die Hauptbibliothek über Composer:

composer require webonyx/graphql-php

Außerdem benötigen wir einen PSR-7-kompatiblen HTTP-Handler. Wir verwenden guzzlehttp/psr7 und nyholm/psr7-server:

composer require guzzlehttp/psr7 nyholm/psr7-server

Erstellen wir eine grundlegende Ordnerstruktur:

project/├── src/│   ├── Schema/│   ├── Resolvers/│   └── Types/├── public/│   └── index.php├── vendor/└── composer.json


2. Definition des GraphQL-Schemas

Das Schema ist das Herzstück der GraphQL API. Es beschreibt die Datentypen und verfügbaren Operationen. Erstellen wir die Datei src/Schema/Schema.php:

<?phpnamespace App\\Schema;

use GraphQL\\Type\\Definition\\ObjectType;use GraphQL\\Type\\Definition\\Type;use GraphQL\\Type\\Schema as GraphQLSchema;

class Schema{ public static function build(): GraphQLSchema { // Typ "User" $userType = new ObjectType([ 'name' => 'User', 'fields' => [ 'id' => Type::int(), 'name' => Type::string(), 'email' => Type::string(), ] ]);

// Typ "Query" – die Wurzelabfrage $queryType = new ObjectType([ 'name' => 'Query', 'fields' => [ 'user' => [ 'type' => $userType, 'args' => [ 'id' => Type::nonNull(Type::int()) ], 'resolve' => function ($root, $args) { // Hier wird der Resolver sein return UserResolver::getUser($args['id']); } ], 'users' => [ 'type' => Type::listOf($userType), 'resolve' => function () { return UserResolver::getAllUsers(); } ] ] ]);

// Typ "Mutation" – die Wurzelmutation $mutationType = new ObjectType([ 'name' => 'Mutation', 'fields' => [ 'createUser' => [ 'type' => $userType, 'args' => [ 'name' => Type::nonNull(Type::string()), 'email' => Type::nonNull(Type::string()) ], 'resolve' => function ($root, $args) { return UserResolver::createUser($args['name'], $args['email']); } ] ] ]);

return new GraphQLSchema([

Blogs

Buchempfehlungen