Persistierte GraphQL-Abfragen
- Gilt für:
- Experience Manager as a Cloud Service
Erstellt für:
- Fortgeschrittener
- Entwickler
Persistierte Abfragen sind Abfragen, die auf dem Adobe Experience Manager-Server (AEM) gespeichert werden. Clients können eine HTTP-GET-Anfrage mit dem Abfragenamen senden, um sie auszuführen. Der Vorteil dieses Ansatzes ist die Cache-Fähigkeit. Während Client-seitige GraphQL-Abfragen auch über HTTP-POST-Anfragen ausgeführt werden können, die nicht zwischengespeichert werden können, können persistierte Abfragen über HTTP-Caches oder ein CDN zwischengespeichert werden, was die Leistung verbessert. Persistierte Abfragen ermöglichen es Ihnen, Ihre Anfragen zu vereinfachen und die Sicherheit zu verbessern, da Ihre Abfragen auf dem Server eingekapselt sind und die AEM-Administrierenden die volle Kontrolle über sie haben. Es ist Best Practice und wird dringend empfohlen, bei der Arbeit mit der AEM GraphQL-API persistierte Abfragen zu verwenden.
Im vorherigen Kapitel haben Sie einige erweiterte GraphQL-Abfragen durchsucht, um Daten für die WKND-App zu erfassen. In diesem Kapitel persistieren Sie die Abfragen in AEM und lernen, wie Sie die Cache-Steuerung für persistierte Abfragen verwenden.
Voraussetzungen
Dieses Dokument ist Teil eines mehrteiligen Tutorials. Bitte vergewissern Sie sich, dass Sie das vorige Kapitel abgeschlossen haben, bevor Sie mit diesem Kapitel fortfahren.
Ziele
In diesem Kapitel erfahren Sie, wie Sie:
- GraphQL-Abfragen mit Parametern persistieren
- Cache-Steuerungsparameter mit persistierten Abfragen verwenden
Konfigurationseinstellungen von persistierten GraphQL-Abfragen überprüfen
Überprüfen wir, ob persistierte GraphQL-Abfragen für das WKND Site-Projekt in Ihrer AEM-Instanz aktiviert sind.
-
Navigieren Sie zu Tools > Allgemein > Konfigurations-Browser.
-
Wählen Sie WKND Shared und dann Eigenschaften in der oberen Navigationsleiste aus, um die Konfigurationseigenschaften zu öffnen. Auf der Seite „Konfigurationseigenschaften“ sollte Folgendes angezeigt werden: Berechtigung für persistierte GraphQL-Abfragen ist aktiviert.
Beibehalten von GraphQL-Abfragen mithilfe des integrierten GraphiQL Explorer-Tools
Behalten wir in diesem Abschnitt die GraphQL-Abfrage bei, die später in der Client-Anwendung zum Abrufen und Rendern der Daten des Adventure-Inhaltsfragments verwendet wird.
-
Geben Sie die folgende Abfrage in den GraphiQL-Explorer ein:
query getAdventureDetailsBySlug($slug: String!) { adventureList(filter: {slug: {_expressions: [{value: $slug}]}}) { items { _path title activity adventureType price tripLength groupSize difficulty primaryImage { ... on ImageRef { _path mimeType width height } } description { html json } itinerary { html json } location { _path name description { html json } contactInfo { phone email } locationImage { ... on ImageRef { _path } } weatherBySeason address { streetAddress city state zipCode country } } instructorTeam { _metadata { stringMetadata { name value } } teamFoundingDate description { json } teamMembers { fullName contactInfo { phone email } profilePicture { ... on ImageRef { _path } } instructorExperienceLevel skills biography { html } } } administrator { fullName contactInfo { phone email } biography { html } } } _references { ... on ImageRef { _path mimeType } ... on LocationModel { _path __typename } } } }
Stellen Sie sicher, dass die Abfrage funktioniert, bevor Sie sie speichern.
-
Tippen Sie anschließend auf „Speichern unter“ und geben Sie
adventure-details-by-slug
als Abfragename ein.
Ausführen einer persistierten Abfrage mit Variablen durch Codierung von Sonderzeichen
Im Folgenden wird erläutert, wie persistierte Abfragen mit Variablen von Client-seitigen Anwendungen ausgeführt werden, indem die Sonderzeichen codiert werden.
Um eine persistierte Abfrage auszuführen, sendet ein Client-Programm eine GET-Anfrage mit der folgenden Syntax:
GET <AEM_HOST>/graphql/execute.json/<Project-Config-Name>/<Persisted-Query-Name>
Um eine persistierte Abfrage mit einer Variable auszuführen, ändert sich die obige Syntax in:
GET <AEM_HOST>/graphql/execute.json/<Project-Config-Name>/<Persisted-Query-Name>;variable1=value1;variable2=value2
Die Sonderzeichen wie Semikolons (;), Gleichheitszeichen (=), Schrägstriche (/) und Leerzeichen müssen so konvertiert werden, dass sie die entsprechende UTF-8-Codierung verwenden.
Durch Ausführen der Abfrage getAllAdventureDetailsBySlug
im Befehlszeilenterminal können wir diese Konzepte in der Praxis überprüfen.
-
Öffnen Sie den GraphiQL Explorer, klicken Sie auf die Auslassungspunkte (…) neben der persistenten Abfrage
getAllAdventureDetailsBySlug
und dann auf URL kopieren. Fügen Sie die kopierte URL in eine Textverarbeitung ein. Sie sieht wie folgt aus:http://<AEM_HOST>/graphql/execute.json/wknd-shared/getAllAdventureDetailsBySlug;slug=
-
Fügen Sie
yosemite-backpacking
als Variablenwert hinzuhttp://<AEM_HOST>/graphql/execute.json/wknd-shared/getAllAdventureDetailsBySlug;slug=yosemite-backpacking
-
Codieren Sie die Sonderzeichen (;) und Gleichheitszeichen (=).
http://<AEM_HOST>/graphql/execute.json/wknd-shared/getAllAdventureDetailsBySlug%3Bslug%3Dyosemite-backpacking
-
Öffnen Sie ein Befehlszeilen-Terminal und verwenden Sie cURL, um die Abfrage ausführen
$ curl -X GET http://<AEM_HOST>/graphql/execute.json/wknd-shared/getAllAdventureDetailsBySlug%3Bslug%3Dyosemite-backpacking
Lesen Sie auch Ausführen einer persistierten Abfrage, Verwenden von Abfragevariablen und Codierung der Abfrage-URL zur Verwendung durch eine App, um die Ausführung persistierter Abfragen durch Client-Anwendungen zu lernen.
Aktualisieren von Cache-Steuerungsparametern in persistierten Abfragen
Mit der AEM GraphQL-API können Sie die standardmäßigen Cache-Steuerungsparameter in Ihren Abfragen aktualisieren, um die Leistung zu verbessern. Die Standardwerte für die Cache-Steuerung sind:
-
60 Sekunden ist die Standard-TTL (maxage=60) für den Client (z. B. einen Browser)
-
7200 Sekunden ist die Standard-TTL (s-maxage=7200) für den Dispatcher und das CDN, auch bekannt als freigegebene Caches
Verwenden Sie die adventures-all
-Abfrage zum Aktualisieren der Cache-Steuerungsparameter. Die Abfrageantwort ist groß und es ist nützlich, ihren age
im Cache zu steuern. Diese persistierte Abfrage wird später verwendet, um die Clientanwendung zu aktualisieren.
-
Öffnen Sie den GraphiQL Explorer und klicken Sie auf die Auslassungspunkte (…) neben der persistenten Abfrage, danach klicken Sie auf Headers zum Öffnen des Cache-Konfiguration-Modals.
-
Aktualisieren Sie im Cache-Konfigurations-Modal den Wert des
max-age
-Headers auf600
Sekunden (10 Minuten) und klicken Sie auf Speichern
Lesen Sie Caching Ihrer persistierten Abfragen für weitere Informationen zu den standardmäßigen Cache-Steuerungsparametern.
Herzlichen Glückwunsch!
Herzlichen Glückwunsch! Sie haben jetzt gelernt, wie man GraphQL-Abfragen mit Parametern persistiert, persistierte Abfragen aktualisiert und Cache-Steuerungsparameter mit persistierten Abfragen verwendet.
Nächste Schritte
Im nächsten Kapitel werden Sie die Anfragen für persistierte Abfragen in der WKND-App implementieren.