GraphQL mit Drupal 8 : The All-You-Need-To-Know Guide (mit Beispielen!)
Veröffentlicht: 2019-12-17GraphQL kommuniziert mit Drupal in HTTP und die Ausgaben sind strukturierter als je zuvor!
Heute beginnen großartige Kundenerlebnisse mit großartigen Inhalten. Inhalte, die überall verfügbar gemacht werden. Mit der API-First-Initiative von Drupal 8 können die von Drupal verwalteten Inhalte problemlos von anderen Systemen über HTTP verwendet werden. REST (Representational State Transfer) bietet einen Designstandard für APIs. Da Clientanwendungen jedoch immer komplexer und anspruchsvoller werden, benötigen Entwickler eine modernere und effektivere Lösung.

GraphQL entstand aus der Nachfrage nach einer flexibleren und leistungsfähigeren Client-Server-Interaktion. Es ist eine ausgeklügelte Abfragesprache und eine Ausführungsmaschine. 2012 hat Facebook dafür die Spezifikation erstellt, die seine Fähigkeiten und die Anforderungen an Datenmodelle für Headless-Anwendungen beschreibt.
Was ist GraphQL?
GraphQL ist ein adaptiver Standard für APIs und bietet eine Laufzeit zum Erfüllen dieser Abfragen. GraphQL liefert vollständige und angemessene Details zu den Informationen in Ihrer API. Es wurde mit der Ideologie "Fragen Sie nach dem, was Sie brauchen, und bekommen Sie genau das" entwickelt. Es ermöglicht dem Client, genau die Antwort abzurufen, die er von der API benötigt, nicht mehr und nicht weniger.
Vorteile von GraphQL
Einige der vielen Vorteile der Verwendung von GraphQL für Drupal -
- Schnellere Frontend-Entwicklung
Heben Sie Anwendungen schnell hervor, ohne auf neue Back-End-Endpunkte warten zu müssen. Verbessern Sie den Datenabruf und die Codepflege, indem Sie die Daten in die gewünschte Form bringen. - Fragen Sie nach dem, was Sie brauchen und bekommen Sie genau das
Es liefert genau die Antwort, nach der der Kunde gefragt hat. Es gibt immer vorhersehbare Ergebnisse zurück. Anwendungen, die GraphQL verwenden, sind auch stabil, da die Anwendung die erhaltenen Daten steuert, nicht der Server. - Nutzen Sie Ihre vorhandenen Daten
GraphQL kann mit jeder bestehenden Infrastruktur verwendet werden, zB REST, SOAP oder vorhandene Datenbank oder alles andere. Es ermöglicht Ihnen, alle Daten in einer einzigen Anfrage abzufragen und bietet Ihnen eine bereinigte, vorhersehbare Antwort. - Weniger Bytes und Roundtrips
Mit GraphQL können alle erforderlichen Daten mit einer einzigen Abfrage abgerufen werden. Es macht die
Bewerbung schneller.

GraphQL mit Drupal 8
REST vs. JSON:API vs. GraphQL
Wenn wir diese drei nach der Anfrageeffizienz vergleichen, sind JSON:API und GraphQL hervorragend. Denn in einer einzigen Anfrage können JSON:API und GraphQl alle erforderlichen Antworten bereitstellen. Im Fall von JSON:API müssen wir manchmal die Antwort anpassen, aber wenn es um GraphQL geht, dient es nur dem, was wir brauchen. REST ist im Vergleich zu diesen langsamer, da mehrere Anforderungen erforderlich sind, um die gemeinsamen Anforderungen zu erfüllen.
In Bezug auf die Einfachheit der Bedienung und Implementierung ist REST das einfachste, es gibt es schon seit einiger Zeit. JSON:API funktioniert auch sofort mit CDN und Reverse-Proxys. Für GraphQL wird eine zusätzliche Infrastruktur und Clientbibliotheken benötigt, um sie zu implementieren.
Im Vergleich zu GraphQL ist es einfacher, Webcache in REST und JSON:API zu verwenden. In GraphQL gibt es nur einen Endpunkt (meistens einen HTTP-POST-Endpunkt), an den alle Abfragen gesendet werden. Da jede Abfrage unterschiedlich sein kann, ist es schwieriger, diese Art des Cachings zu verwenden.
Die Drupal GraphQL-Spezifikation unterstützt automatisch Massen-/Batch-Operationen für die bereits implementierten Mutationen, die JSON:API-Spezifikation jedoch nicht. Die Fähigkeit, Batch-Schreibvorgänge durchzuführen, kann wichtig sein.
Installieren von GraphQL für Drupal 8
Das Drupal GraphQL-Modul unterstützt alle GraphQL-Spezifikationen und kann verwendet werden, um GraphQL-Schemas zu erstellen und bereitzustellen. Die neueste Alpha-Version des Drupal 8-Moduls in der Version 8.x-4 bietet Drupal-Modulen die Möglichkeit, das Schema mit einem Plugin zu erweitern.
Hier können Sie das Drupal GraphQL-Modul installieren von - https://www.drupal.org/project/graphql
Sie können mit dem Befehl Composer installieren.
Komponist benötigt 'drupal/graphql:^3.0'
Es bietet Ihnen zwei Module GraphQL Core und GraphQL . Sie müssen beide Module aktivieren. Sie können es mit Drush zB aktivieren
drusch und graphql drush und graphql_core
Abfragen mit Drupal GraphQL
Das Drupal GraphQL-Modul bietet ein Tool namens GraphiQL . Es ist ein leistungsstarkes Tool und verfügt über eine interaktive Benutzeroberfläche mit Funktionen wie der automatischen Vervollständigung. Mit diesem Tool können Sie Abfragen ausführen und Ausgaben abrufen. Navigieren Sie zu – „ /graphql/explorer “ für die Schnittstelle.

Sie erhalten eine Benutzeroberfläche, die wie folgt aussieht –

GraphiQL-Benutzeroberfläche
Auf der linken Seite dieser Benutzeroberfläche können Sie eine Abfrage schreiben und auf der rechten Seite sehen Sie die Ergebnisse als Ausgabe im JSON-Format. Wenn Sie oben rechts auf Docs klicken, erhalten Sie die Dokumentation der verfügbaren Abfragen. Der Abschnitt Abfragevariablen im unteren linken Bereich kann verwendet werden, um Abfragevariablen zu übergeben.
Beispiele
1.Abfragen von Knoten

Drupal GraphQL - Knoten abfragen
2. Taxonomien abfragen

Drupal GraphQL - Abfragen von Taxonomien
3. Routen abfragen

Drupal GraphQL - Abfragen von Routen
4. Fragmente abfragen

Drupal GraphQL - Abfragefragmente
5.Filter

Drupal GraphQL - Filter
6. Filter mit Konjunktion

Drupal GraphQL - Filter mit Konjunktion
Andere verfügbare Operatoren sind:
- GLEICH
- NICHT GLEICH
- KLEINER ALS
- KLEINER_THAN_OR_GLEICH
- GRÖSSER ALS
- GRÖSSER ALS ODER GLEICH
- IN
- NICHT IN
- MÖGEN
- NICHT WIE
- ZWISCHEN
- NICHT ZWISCHEN
- IST NULL
- IS_NOT_NULL
Konjunktionen können zwei Werte haben
- UND
- ODER
Sie können Gruppen auch verwenden, um komplexere Abfragen zu schreiben.
7.GraphQL-Variablen

Drupal GraphQL - Variablen
Mutationen
In GraphQL ist eine Mutation die Terminologie, die immer dann verwendet wird, wenn Sie auf dem Server gespeicherte Daten hinzufügen, ändern oder löschen möchten. In diesem Fall Drupal. Leider enthält das Modul aufgrund einiger technischer Anforderungen von GraphQL keine Möglichkeit, gängige Mutationen sofort auszuführen.
Beispielcode zum Erstellen, Löschen, Aktualisieren und Hochladen von Dateien finden Sie hier: https://github.com/drupal-graphql/graphql-examples
Beispielmutation:

Drupal GraphQL - Mutationsbeispiel
Drupal GraphQL mit Twig
Die Verwendung von Drupal GraphQL mit Twig kann die Leistung Ihrer Website erheblich verbessern. So geht's – Wenn Sie Daten in die Twig-Vorlage einfügen, können Sie alle erforderlichen Daten mit einem einzigen API-Aufruf abrufen. Da der Client die erhaltenen Daten kontrolliert und nicht der Server, wird der Prozess außerdem noch schneller.
Um Drupal GraphQL mit Twig zu verwenden, benötigen wir das GraphQL Twig-Modul. Um es herunterzuladen und zu aktivieren, verwenden Sie die folgenden Befehle:
Komponist benötigt 'drupal/graphql_twig:^1.0' drush und graphql_twig
Und dann können Sie die GraphQL-Abfrage in Ihrer Website verwenden, z
{#graphql
Anfrage {
admin:userById(id: "1") {
uid
Name
}
user:currentUserContext {
uid
}
}
#}Sie erhalten die Antwortdaten in der GraphQL-Variable.
