Logo

Funcionalidade:

Funções do Schema

Funções do Schema

O schema GraphQL é fornecido com campos e diretivas que expõem funcionalidades da linguagem de programação PHP.

Campos de Função

Os campos de função são Campos Globais, portanto são adicionados a cada tipo no schema GraphQL: em QueryRoot, mas também em Post, User, etc.

Os campos de função são úteis para manipular os dados após sua recuperação, permitindo transformar o valor de um campo da maneira necessária, e nos concedendo poderosas capacidades de importação/exportação de dados.

Por exemplo, enquanto temos um campo Post.hasComments, podemos precisar do valor oposto. Em vez de criar um novo campo Post.notHasComments (o que exigiria editar código PHP), podemos usar o recurso Field to Input para inserir o valor de hasComments em um campo not, calculando assim o novo valor diretamente dentro da query GraphQL:

query {
  posts {
    id
    hasComments
    notHasComments: _not(value: $__hasComments)
  }
}

Diretivas de Função

O schema GraphQL é fornecido com diretivas que expõem funcionalidades comumente encontradas em linguagens de programação (como PHP).

Os campos de diretiva são úteis para manipular os dados após sua recuperação, permitindo transformar o valor de um campo da maneira necessária, e nos concedendo poderosas capacidades de importação/exportação de dados.

Por exemplo, esta query:

query {
  posts {
    title @strUpperCase
  }
}

...produzirá esta resposta:

{
  "data": {
    "posts": [
      {
        "title": "HELLO WORLD!"
      },
      {
        "title": "LOVELY WEATHER"
      }
    ]
  }
}

Campos Auxiliares

O schema GraphQL recebe campos que fornecem funcionalidades auxiliares de uso comum.

Os campos auxiliares são Campos Globais, portanto são adicionados a cada tipo no schema GraphQL: em QueryRoot, mas também em Post, User, etc.

Nesta query, recuperamos os IDs dos usuários do site e executamos uma nova query GraphQL passando seus IDs como parâmetro:

query {
  users {
    userID: id
    url: _urlAddParams(
      url: "https://somewebsite/endpoint/user-data",
      params: {
        userID: $__userID
      }
    )
    headers: _httpRequestHeaders
    headerNameValueEntryList: _objectConvertToNameValueEntryList(
      object: $__headers
    )
    _sendHTTPRequest(input: {
      url: $__url
      options: {
        headers: $__headerNameValueEntryList
      }
    }) {
      statusCode
      contentType
      body
    }
  }
}

Campos de Ambiente

O schema GraphQL é fornecido com o campo global _env, que permite obter um valor de uma variável de ambiente, ou de uma constante PHP (mais comumente definida em wp-config.php, mas que também pode ser definida em outro lugar).

Esta query recupera a constante de ambiente GITHUB_ACCESS_TOKEN que podemos configurar para acessar um repositório privado no GitHub:

query {
  githubAccessToken: _env(name: "GITHUB_ACCESS_TOKEN")
}

Assine nossa newsletter

Fique por dentro de todas as atualizações do Gato GraphQL.