Persisted Queries
Persisted QueriesEdycja Queries Persistowanych na Niskim Poziomie

Edycja Queries Persistowanych na Niskim Poziomie

Included in the “Power Extensions” bundle

Sprawia, że normalnie ukryte dyrektywy (które wstrzykują funkcjonalność do serwera GraphQL) stają się widoczne podczas edycji queries persistowanej.

Opis

W GraphQL dyrektywy to funkcje umożliwiające modyfikowanie wyniku pola. Na przykład dyrektywa @strUpperCase przekształca wartość pola na format wielkich liter.

Istnieją 2 rodzaje dyrektyw: te, które są stosowane do schematu i wykonywane zawsze, przy każdej queries; oraz te, które są stosowane do queries przez użytkownika lub aplikację po stronie klienta.

W Gato GraphQL duża część funkcjonalności związanej z rozwiązywaniem queries jest wykonywana za pomocą dyrektyw stosowanych do schematu.

Na przykład Cache Control działa poprzez zastosowanie dyrektywy @cacheControl do schematu. Ta konfiguracja jest domyślnie ukryta i zarządzana przez wtyczkę za pośrednictwem interfejsu użytkownika:

Definiowanie polityki cache control

Podobnie te dyrektywy zapewniają kontrolę dostępu do pól (a podobne dyrektywy zapewniają kontrolę dostępu do dyrektyw):

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

To rozszerzenie Low-Level Persisted Query Editing sprawia, że wszystkie dyrektywy stosowane do schematu są dostępne w edytorze GraphiQL podczas edycji queries persistowanych, umożliwiając pominięcie interfejsu użytkownika i dodanie dyrektyw typu schematu bezpośrednio w queries persistowanej.

Dyrektywy typu schematu dostępne w edytorze Queries persistowanych

Na przykład definiowanie Cache Control można wykonać bezpośrednio w queries persistowanej, ustawiając dyrektywę @cacheControl z argumentem maxAge na polu; lub kontrolę dostępu można zdefiniować bezpośrednio, dodając odpowiednią dyrektywę @validate... bezpośrednio na polu:

Dyrektywy typu schematu