GraphQL API mit PHP: Schritt-für-Schritt-Tutorial für Anfänger

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

Einführung in GraphQL und PHP

GraphQL ist eine Abfragesprache für APIs und eine Laufzeitumgebung zur Ausführung dieser Abfragen mit vorhandenen Daten. Im Gegensatz zu REST, wo Sie eine feste Antwortstruktur erhalten, ermöglicht GraphQL dem Client, nur die Daten anzufragen, die er tatsächlich benötigt. Das macht die API flexibler und effizienter.

In diesem Tutorial erstellen wir eine einfache GraphQL API mit PHP von Grund auf. Sie erfahren, wie Sie die notwendigen Bibliotheken installieren, ein Schema definieren, Resolver schreiben und Abfragen verarbeiten. Der Artikel richtet sich an Anfänger, die mit den Grundlagen von PHP und Datenbanken (z. B. MySQL oder SQLite) vertraut sind.

Wir verwenden die Bibliothek webonyx/graphql-php – das ist das beliebteste und stabilste Paket zur Implementierung von GraphQL in PHP. Am Ende können Sie Ihren eigenen GraphQL-Server starten und Abfragen über jeden HTTP-Client (z. B. cURL oder Insomnia) an ihn senden.



Installation und Einrichtung des Projekts

Schritt 1: Projekt erstellen und Abhängigkeiten installieren

Erstellen Sie zunächst ein neues Verzeichnis für das Projekt und initialisieren Sie Composer:

mkdir graphql-php-tutorialcd graphql-php-tutorialcomposer init

Installieren Sie dann die Bibliothek webonyx/graphql-php:

composer require webonyx/graphql-php

Außerdem benötigen wir einen PSR-7-kompatiblen HTTP-Server. Der Einfachheit halber verwenden wir den integrierten PHP-Server und die Bibliothek guzzlehttp/psr7 für die Arbeit mit Anfragen und Antworten:

composer require guzzlehttp/psr7


Schritt 2: Projektstruktur

Erstellen Sie die folgende Dateistruktur:

  • index.php – Einstiegspunkt der Anwendung
  • schema.graphql – Datei mit der Definition des GraphQL-Schemas
  • resolvers.php – Datei mit den Resolver-Funktionen
  • data.php – Simulation einer Datenbank (Array mit Daten)


Definition des GraphQL-Schemas

Schritt 3: Schema schreiben

Das Schema ist die Beschreibung der Datentypen und verfügbaren Operationen (Abfragen und Mutationen). Erstellen wir ein einfaches Schema zur Verwaltung einer Bücherliste. Öffnen Sie die Datei schema.graphql und fügen Sie den folgenden Code ein:

type Book {    id: ID!    title: String!    author: String!    year: Int}

type Query { books: [Book] book(id: ID!): Book}

type Mutation { addBook(title: String!, author: String!, year: Int): Book deleteBook(id: ID!): Book}

Hier haben wir definiert:

  • Book – Datentyp mit den Feldern id, title, author und year.
  • Query – Operationen zum Abrufen von Daten: Liste aller Bücher und ein Buch nach ID.
  • Mutation – Operationen zum Ändern von Daten: Hinzufügen und Löschen eines Buches.


Schritt 4: Daten und Resolver vorbereiten

Erstellen Sie die Datei data.php mit einem Array von Büchern:

<?php$books = [    1 => ['id' => 1, 'title' => 'Krieg und Frieden', 'author' => 'Leo Tolstoi', 'year' => 1869],    2 => ['id' => 2, 'title' => 'Verbrechen und Strafe', 'author' => 'Fjodor Dostojewski', 'year' => 1866],];

Schreiben wir nun die Resolver in der Datei resolvers.php. Resolver sind Funktionen, die die Daten für jedes Feld des Schemas zurückgeben.

<?phprequire 'data.php';

function resolveBooks() { global $books; return array_values($books);}

function resolveBook($root, $args) { global $books; return $books[$args['id']] ?? null;}

function resolveAddBook($root, $args) { global $books; $newId = count($books) + 1; $newBook = [ 'id' => $newId, 'title' => $args['title'], 'author' => $args['author'], 'year' => $args['year'] ?? null ]; $books[$newId] = $newBook; return $newBook;}

function resolveDeleteBook($root, $args) { global $books;

Blogs

Buchempfehlungen