Persisted Queries
Persisted QueriesEdição de Baixo Nível de Queries Persistidas

Edição de Baixo Nível de Queries Persistidas

Included in the “Power Extensions” bundle

Torna visíveis as directives normalmente ocultas (que injetam funcionalidades no servidor GraphQL) durante a edição de uma query persistida.

Descrição

No GraphQL, directives são funções que permitem modificar o resultado de um campo. Por exemplo, uma directive @strUpperCase transforma o valor do campo em formato maiúsculo.

Existem 2 tipos de directives: aquelas que são aplicadas ao schema e executadas sempre, em toda query; e aquelas que são aplicadas à query, pelo usuário ou pela aplicação no lado do cliente.

No Gato GraphQL, grande parte da funcionalidade envolvida na resolução de uma query é executada por meio de directives aplicadas ao schema.

Por exemplo, o Cache Control funciona aplicando a directive @cacheControl ao schema. Essa configuração fica oculta por padrão e é gerenciada pelo plugin por meio da interface do usuário:

Definindo uma política de cache control

Da mesma forma, estas directives fornecem controle de acesso para campos (e directives similares fornecem controle de acesso para directives):

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

Esta extensão Low-Level Persisted Query Editing torna todas as directives aplicadas ao schema disponíveis no editor GraphiQL durante a edição de queries persistidas, permitindo que você evite a interface do usuário e adicione as directives do tipo schema diretamente na query persistida.

Directives do tipo schema disponíveis no editor de Queries persistidas

Como exemplo, a definição do Cache Control pode ser feita diretamente na query persistida, configurando a directive @cacheControl com o argumento maxAge no campo; ou o controle de acesso pode ser definido diretamente, adicionando a directive @validate... correspondente diretamente no campo:

Directives do tipo schema