Criando uma API
Criando uma APICriando um custom endpoint

Criando um custom endpoint

Além do single endpoint, o Gato GraphQL também suporta custom endpoints, para recuperar e publicar dados para um schema personalizado (contendo apenas um subconjunto dos tipos disponíveis) e regras de validação de usuário, de modo a atender as necessidades de diferentes usuários e aplicações.

Podemos criar quantos custom endpoints forem necessários.

Por exemplo, podemos criar um custom endpoint para:

  • Um cliente ou usuário específico, em /graphql/my-client/
  • Um grupo de usuários com mais acesso a funcionalidades (como usuários PRO), em /graphql/pro-users/
  • Fornecer dados ao nosso aplicativo mobile, em /graphql/mobile-app/
  • Dar acesso a uma API de terceiros, em /graphql/external-api/
  • Outros casos

Editor do Custom Endpoint

Executando o custom endpoint em uma aplicação

Siga as instruções do guia Conectando ao servidor GraphQL a partir de um cliente.

Acessando todos os custom endpoints

Clicando em "Custom Endpoints" no menu do plugin, é exibida a lista de todos os custom endpoints criados:

Custom Endpoints no painel administrativo
Custom Endpoints no painel administrativo

Criando um novo custom endpoint

Clique no botão "Add New GraphQL endpoint" para abrir o editor do WordPress:

Criando um novo Custom Endpoint

Dê um título, certifique-se de que o permalink é o desejado, selecione a configuração do schema e ajuste as opções. Quando estiver pronto, clique no botão Publish, e o custom endpoint será criado, usando o permalink configurado como URL do endpoint.

Os links para o endpoint (e para a fonte e os clientes) são exibidos no painel lateral "Custom Endpoint Overview":

Custom Endpoint Overview

Configuração do schema

Definir quais elementos o schema contém, e qual acesso os usuários terão a ele, é configurado na configuração do schema.

Portanto, devemos criar uma configuração de schema, e então selecioná-la no menu suspenso (ou não usar nenhuma, ou usar a padrão):

Selecionando a configuração do schema

Endpoints privados

Ao definir o status do Custom Endpoint como private, o endpoint só pode ser acessado pelo usuário administrador. Isso evita que nossos dados sejam compartilhados involuntariamente com usuários que não deveriam ter acesso a eles.

Por exemplo, podemos criar Custom Endpoints privados que ajudam a gerenciar a aplicação, como recuperar dados para criar relatórios com nossas métricas.

Custom Endpoint Privado

Endpoints protegidos por senha

Se criarmos um Custom Endpoint para um cliente específico, podemos atribuir uma senha a ele, para fornecer um nível adicional de segurança, garantindo que apenas aquele cliente acesse o endpoint.

Custom Endpoint protegido por senha

Ao acessar pela primeira vez um endpoint protegido por senha (seja acessando o endpoint diretamente, ou seus clientes GraphiQL ou Interactive Schema), é exibida uma tela solicitando a senha:

Custom Endpoint protegido por senha: Primeiro acesso

Após a senha ser fornecida e validada, somente então o usuário terá acesso ao endpoint ou cliente desejado:

Custom Endpoint protegido por senha: Após autorização

Criando uma hierarquia de endpoints

Leia as instruções em criando uma hierarquia de API.

Desativando o custom endpoint

Nas opções, defina "Enabled" como false para desativar o custom endpoint.

Esse recurso pode ser útil quando o custom endpoint faz parte de uma hierarquia de API, para fornecer um comportamento comum aos seus custom endpoints filhos, sem que ele próprio precise ser executado.

Descrevendo o custom endpoint

Use o campo "Excerpt", no painel de configurações do documento, para dar uma descrição ao custom endpoint.

Encontre mais informações no guia Adicionando uma descrição à API.

Clientes do endpoint

Cada custom endpoint tem seu próprio conjunto de clientes para interação.

Cliente GraphiQL

Adicione ?view=graphiql ao endpoint para acessar seu cliente GraphiQL:

Cliente GraphiQL do custom endpoint

O cliente GraphiQL também pode ser aberto ao editar o Custom Endpoint, no painel lateral "Custom Endpoint Overview":

Link para o cliente GraphiQL do custom endpoint no editor

Da mesma forma, o cliente pode ser aberto na página de lista de Custom Endpoints, no link "GraphiQL" ao passar o cursor sobre a entrada:

Link para o cliente GraphiQL do custom endpoint na lista
Link para o cliente GraphiQL do custom endpoint na lista

Para desativar o cliente GraphiQL, defina a opção "Expose GraphiQL client?" como false no editor do Custom Endpoint.

Cliente Interactive Schema (Voyager)

Adicione ?view=schema ao endpoint para acessar seu cliente Interactive Schema, para visualizar e interagir com o schema do endpoint:

Cliente Voyager do custom endpoint

O cliente Interactive Schema também pode ser aberto ao editar o Custom Endpoint, no painel lateral "Custom Endpoint Overview":

Link para o cliente Interactive Schema do custom endpoint no editor

Da mesma forma, o cliente pode ser aberto na página de lista de Custom Endpoints, no link "Interactive Schema" ao passar o cursor sobre a entrada:

Link para o cliente Interactive Schema do custom endpoint na lista
Link para o cliente Interactive Schema do custom endpoint na lista

Para desativar o cliente Interactive Schema, defina a opção "Expose the Interactive Schema client?" como false no editor do Custom Endpoint.

Testando o endpoint antes de publicar online

Um custom endpoint com status draft ou pending está disponível apenas para os usuários editores do schema. Isso lhes dá a capacidade de:

  • Executar queries GraphQL contra ele
  • Acessar os clientes GraphiQL e Voyager do endpoint

Assim, podemos criar um custom endpoint, atribuir uma Configuração de Schema, publicá-lo como draft ou pending, e testá-lo (ex.: verificar se suas regras de Controle de Acesso são adequadas).

Após aprovado, somente então definimos seu status como publish, tornando o custom endpoint disponível para todos.

Visualizando a fonte

Ao anexar ?view=source ao endpoint, ele exibirá a configuração do endpoint (desde que o usuário esteja autenticado e seu perfil tenha acesso a ela):

Fonte do custom endpoint


Configuração no editor do WordPress

Estes são os campos no corpo do editor:

CampoDescrição
TítuloTítulo do custom endpoint
Configuração do schemaNo menu suspenso, selecione a configuração do schema que se aplica ao custom endpoint, ou uma destas opções:
  • "Default": a configuração do schema é a selecionada nas Configurações do plugin
  • "None": o custom endpoint não terá restrições
  • "Inherit from parent": usa a mesma configuração do schema do custom endpoint pai.
    Esta opção está disponível quando o módulo "API Hierarchy" está habilitado e o custom endpoint tem uma query pai (selecionada nas configurações do documento)
OpçõesPersonaliza o comportamento do custom endpoint:
  • Enabled?: Se o custom endpoint está habilitado.
    É útil desativar um custom endpoint quando ele é uma query pai em uma hierarquia de API
  • Expose GraphiQL client?: Habilita/desabilita a associação de um cliente GraphiQL ao endpoint, acessível em ?view=graphiql
  • Expose the Interactive Schema client?: Habilita/desabilita a associação de um cliente Interactive Schema ao endpoint, acessível em ?view=schema
  • Inherit query from ancestor(s)?: Usa a mesma query do custom endpoint pai.
    Esta opção está disponível quando o módulo "API Hierarchy" está habilitado e o custom endpoint tem uma query pai (selecionada nas configurações do documento)

Estes são os campos nas configurações do documento:

CampoDescrição
PermalinkO endpoint sob o qual o custom endpoint estará disponível
CategoriasPermite categorizar o custom endpoint.
Ex.: mobile, app, etc.
ExcerptFornece uma descrição para o custom endpoint.
Este campo está disponível quando o módulo "Excerpt as Description" está habilitado
Atributos de páginaSeleciona um custom endpoint pai.
Este campo está disponível quando o módulo "API Hierarchy" está habilitado