Gato GraphQL vs WP REST API
Vergleich zwischen Gato GraphQL und der WP REST API


Die Unterschiede zwischen REST- und GraphQL-APIs gelten allgemein auch für den Vergleich der WP REST API mit Gato GraphQL.
Mit GraphQL kannst du eine maßgeschneiderte GraphQL-Query gegen einen Endpoint ausführen, genau angeben, welche Daten du benötigst, und diese Daten in einer einzigen Anfrage abrufen.
Die folgende GraphQL-Query ruft zum Beispiel die benötigten Daten für einen bestimmten Post ab, einschließlich der Daten aus seinen Beziehungen (Autor, Kategorien und Tags), alles in einer einzigen Anfrage:
query {
post(by: { id: 1 }) {
title
content
url
date
author {
id
name
}
categories {
id
name
}
tags {
id
name
}
}
}Um dieselben Daten mit REST abzurufen, musst du möglicherweise zunächst eine Anfrage stellen, um die Post-Daten zu erhalten, und danach für jede seiner Beziehungen (Autor, Kategorien und Tags) eine weitere Anfrage, um deren Daten abzurufen.
Diese architektonischen Unterschiede zwischen REST und GraphQL wurden bereits ausführlich andernorts behandelt, daher werden wir sie hier nicht wiederholen.
Im Folgenden führen wir einen spezifischeren Vergleich zwischen Gato GraphQL + allen Erweiterungen und der WP REST API durch.
Übersichtstabelle
| Funktion | Gato GraphQL | WP REST API |
|---|---|---|
| Datenabruf | Führt maßgeschneiderte GraphQL-Queries gegen einen Endpoint aus und ruft spezifische Daten in einer einzigen Anfrage ab. | Erfordert mehrere Anfragen an verschiedene Endpoints, um zusammenhängende Daten abzurufen (z.B. Post-Daten, Autor-Daten, Kategorien und Tags). |
| Endpoints | Unterstützt Persisted Queries, also Endpoints mit vordefinierten Daten, die mithilfe der GraphQL-Sprache über eine Benutzeroberfläche innerhalb der wp-admin erstellt werden, ohne Code deployen zu müssen. | Stellt Daten über REST-Endpoints bereit, jeder mit seiner eigenen URL und vordefinierten Daten, erstellt per PHP-Code und innerhalb eines Themes oder Plugins deployed. |
| Zugriffskontrolle | Bietet Flexibilität mit feldbasierter Zugriffskontrolle auf Basis von Regeln (z.B. Benutzerrollen, Fähigkeiten, IP-Bereich). | Schränkt Daten anhand des Parameters context ein (z.B. view für nicht authentifizierte Benutzer, edit für authentifizierte Benutzer mit den entsprechenden Berechtigungen). |
| Massenoperationen | Unterstützt die Multiple Query Execution, bei der ein einzelnes GraphQL-Dokument mehrere Operationen ausführen kann, die über die Direktive @export Zustand teilen können, was Batch-Anfragen verbessert. | Ermöglicht Batch-Anfragen, bei denen mehrere Anfragen intern innerhalb einer einzigen HTTP-Anfrage verarbeitet werden. |
| Site-Verwaltung | Kann Daten abrufen, modifizieren und in einem einzigen GraphQL-Dokument über Benutzeroberflächen zurückspeichern, was Automatisierung und Verwaltung von WordPress-Sites ermöglicht. Kann Aufgaben mehrerer Plugins übernehmen, wie Duplizieren, Automatisieren, Sichern, Suchen/Ersetzen, Webhooks und Übersetzen. Ist eine API und noch viel mehr. | In erster Linie eine API für den Zugriff auf und die Bearbeitung von WordPress-Daten. |
| Allgemeinheit | Ein generisches Werkzeug zur Verwaltung von WordPress-Sites, das Datenmutationen und die Integration mit Drittanbieterdiensten über GraphQL-Queries ermöglicht. | Fokussiert auf die Bereitstellung einer API; erfordert zusätzliche Plugins oder benutzerdefinierten Code, um ähnliche Funktionalitäten zu erreichen. |
Zusammenfassung der wichtigsten Punkte:
- Datenabruf: Gato GraphQL verwendet maßgeschneiderte queries, während die WP REST API mehrere Endpoint-Anfragen nutzt.
- Endpoints: Gato GraphQL verwendet per UI erstellte Persisted Queries, während die WP REST API PHP-codierte REST-Endpoints verwendet.
- Zugriffskontrolle: Gato GraphQL bietet feldbasierte Kontrolle, während die WP REST API den context-Parameter verwendet.
- Massenoperationen: Gato GraphQL verwendet die Multiple Query Execution, während die WP REST API Batch-Anfragen verwendet.
- Site-Verwaltung: Gato GraphQL ist ein umfassendes Werkzeug, während die WP REST API in erster Linie eine API ist.
Zugriff auf vordefinierte Daten
Mit der WP REST API stellst du Daten über REST-Endpoints bereit. Jeder Endpoint hat seine eigene URL, und seine Daten sind vordefiniert (für die entsprechenden Ressourcen, wie Posts oder Benutzer).
Ähnlich wie REST-Endpoints unterstützt Gato GraphQL Persisted Queries, die ebenfalls Endpoints mit vordefinierten Daten sind. Das Abrufen einer Persisted Query per GET führt die gespeicherte GraphQL-Query aus und liefert die erwartete JSON-Antwort:

Der Unterschied besteht darin, dass REST-API-Endpoints per PHP-Code erstellt und innerhalb eines Themes oder Plugins deployed werden müssen, während Gato GraphQL Persisted Queries mithilfe der GraphQL-Sprache erstellt und über eine Benutzeroberfläche (basierend auf dem WordPress-Editor) innerhalb der wp-admin veröffentlicht werden, ohne dass Code deployed werden muss.

Dieselben Caching-Mechanismen können auf REST-Endpoints und GraphQL Persisted Queries angewendet werden. Da die Persisted Query unter ihrem eigenen Endpoint erreichbar ist, kann ihre Antwort mit standardmäßigem HTTP-Caching gecacht werden (PRO).
Zugriffskontrolle
Die Einschränkung von Daten in der WP REST API hängt vom Parameter context ab. Das Übergeben von ?context=view liefert Daten für nicht authentifizierte Benutzer, und ?context=edit enthält zusätzliche Daten für authentifizierte Benutzer (mit den richtigen Berechtigungen), wie das Feld content.raw des Posts.
Gato GraphQL bietet deutlich mehr Flexibilität, da jedes einzelne Feld basierend auf den Regeln der Zugriffskontrolle zugänglich oder nicht zugänglich ist. Du kannst festlegen, dass nur eingeloggte Benutzer, Benutzer mit einer bestimmten Rolle oder Fähigkeit oder Besucher aus einem bestimmten IP-Bereich auf ein bestimmtes Feld zugreifen können (PRO).

Massenoperationen
Die WP REST API ermöglicht die Ausführung von Batch-Anfragen, bei denen mehrere Anfragen intern innerhalb einer einzigen HTTP-Anfrage verarbeitet werden.
Gato GraphQL bietet die Multiple Query Execution, bei der ein einzelnes GraphQL-Dokument mehrere Operationen ausführen kann.
Die Multiple Query Execution ist eine Verbesserung gegenüber Batch-Anfragen, da die Operationen über die Direktive @export Zustand miteinander teilen können.
Um zum Beispiel einen Post zu duplizieren, ruft eine query-Operation die Post-Daten ab und übergibt diese Daten an eine mutation-Operation, die damit einen neuen Post erstellt:
query GetPostAndExportData($postId: ID!)
{
post(by: { id: $postId }, status: any) {
author {
id @export(as: "authorID")
}
categories {
id @export(as: "categoryIDs", type: LIST)
}
rawContent @export(as: "rawContent")
rawExcerpt @export(as: "excerpt")
featuredImage {
id @export(as: "featuredImageID")
}
tags {
id @export(as: "tagIDs", type: LIST)
}
rawTitle @export(as: "title")
}
}
mutation DuplicatePost
@depends(on: "GetPostAndExportData")
{
createPost(input: {
status: draft,
authorBy: {
id: $authorID
},
categoriesBy: {
ids: $categoryIDs
},
contentAs: {
html: $rawContent
},
excerpt: $excerpt
featuredImageBy: {
id: $featuredImageID
},
tagsBy: {
ids: $tagIDs
},
title: $title
}) {
postID
}
}WordPress-Site verwalten
Gato GraphQL ermöglicht es uns, Daten aus der Datenbank abzurufen, sie nach Bedarf zu modifizieren und sie wieder zurückzuspeichern – alles innerhalb eines einzigen GraphQL-Dokuments.
Dies wird über Benutzeroberflächen erreicht, um GraphQL-Queries zu erstellen und zu veröffentlichen, die Endpoints nach Bedarf zu konfigurieren und die Ausführung einer Query zu automatisieren, wenn ein bestimmtes Ereignis eintritt.
All das bedeutet, dass Gato GraphQL ein generisches Werkzeug zur Verwaltung unserer WordPress-Sites ist und jene Anwendungsfälle abdeckt, bei denen Daten (ob von der WordPress-Site oder von Drittanbieterdiensten bereitgestellt) mutiert werden müssen, da dies durch die Ausführung einer GraphQL-Query erreicht werden kann.
Beachte, wie Gato GraphQL die Funktionalität mehrerer Plugins liefern kann:
- Es ist kein Duplikations-Plugin, dennoch kannst du damit Posts duplizieren.
- Es ist kein Automatisierungs-Plugin, aber du kannst deine Aufgaben automatisieren, ohne jegliche Einschränkungen.
- Es ist kein Backup-Plugin, aber du kannst Posts importieren und Posts exportieren.
- Es ist kein Suchen-und-Ersetzen-Plugin, aber du kannst deine Posts in großem Umfang bearbeiten.
- Es ist weder ein Webhook-Plugin noch ein HTTP-Client, aber du kannst sowohl eine Anfrage an eine beliebige API senden als auch eingehende Anfragen von beliebigen Diensten empfangen und verarbeiten.
- Es ist kein Übersetzungs-Plugin, aber du kannst beliebige Inhalte übersetzen.
Die WP REST API ist genau das, eine API.
Gato GraphQL ist auch eine API, aber noch viel mehr.
