Persisted Queries
Persisted QueriesLow-Level-Bearbeitung von Persisted Queries

Low-Level-Bearbeitung von Persisted Queries

Included in the “Power Extensions” bundle

Macht normalerweise verborgene Direktiven (die bestimmte Funktionen in den GraphQL-Server einschleusen) beim Bearbeiten einer Persisted Query sichtbar.

Beschreibung

In GraphQL sind Direktiven Funktionen, die es ermöglichen, das Ergebnis eines Feldes zu verändern. Zum Beispiel wandelt eine Direktive @strUpperCase den Wert des Feldes in Großbuchstaben um.

Es gibt 2 Arten von Direktiven: solche, die auf das Schema angewendet werden und bei jeder Query immer ausgeführt werden; und solche, die auf die Query angewendet werden, vom Benutzer oder der Anwendung auf der Client-Seite.

In Gato GraphQL wird ein Großteil der Funktionalität beim Auflösen einer Query durch Direktiven ausgeführt, die auf das Schema angewendet werden.

Zum Beispiel funktioniert Cache Control, indem die Direktive @cacheControl auf das Schema angewendet wird. Diese Konfiguration ist standardmäßig ausgeblendet und wird vom Plugin über die Benutzeroberfläche verwaltet:

Eine Cache-Control-Richtlinie definieren

Ebenso bieten diese Direktiven Zugriffskontrolle für Felder (und ähnliche Direktiven bieten Zugriffskontrolle für Direktiven):

  • @disableAccess
  • @validateIsUserLoggedIn
  • @validateIsUserNotLoggedIn
  • @validateDoesLoggedInUserHaveAnyRole.
  • @validateDoesLoggedInUserHaveAnyCapability
  • @validateDoesVisitorComeFromAnyAllowedIP
  • @validateDoesVisitorNotComeFromAnyDeniedIP

Diese Erweiterung Low-Level Persisted Query Editing macht alle auf das Schema angewendeten Direktiven im GraphiQL-Editor beim Bearbeiten von Persisted Queries verfügbar. So kannst du die Benutzeroberfläche umgehen und die Schema-Typ-Direktiven direkt in der Persisted Query hinzufügen.

Schema-Typ-Direktiven im Editor für Persisted Queries

Als Beispiel kann die Definition von Cache Control dann direkt in der Persisted Query vorgenommen werden, indem die Direktive @cacheControl mit dem Argument maxAge auf dem Feld gesetzt wird; oder die Zugriffskontrolle kann direkt definiert werden, indem die entsprechende @validate...-Direktive direkt auf dem Feld hinzugefügt wird:

Schema-Typ-Direktiven