Configurar o schema
Configurar o schemaConsultando campos 'self'

Consultando campos 'self'

Às vezes precisamos modificar o formato da resposta, para emular a mesma resposta de outro servidor GraphQL, ou da API REST.

Podemos fazer isso por meio do campo self, adicionado a todos os tipos no schema GraphQL, que retorna o mesmo objeto onde é aplicado:

type QueryRoot {
  self: QueryRoot!
}
 
type Post {
  self: Post!
}
 
type User {
  self: User!
}

Como funciona

O campo self permite adicionar níveis extras à query sem sair do objeto consultado. Executando esta query:

{
  __typename
  self {
    __typename
  }
  
  post(by: {id: 1}) {
    self {
      id
      __typename
    }
  }
  
  user(by: {id: 1}) {
    self {
      id
      __typename
    }
  }
}

...produz esta resposta:

{
  "data": {
    "__typename": "QueryRoot",
    "self": {
      "__typename": "QueryRoot"
    },
    "post": {
      "self": {
        "id": 1,
        "__typename": "Post"
      }
    },
    "user": {
      "self": {
        "id": 1,
        "__typename": "User"
      }
    }
  }
}

Como usar

Use self para adicionar artificialmente os níveis extras necessários à resposta, e aliases de campo para renomear esses níveis de forma adequada.

Por exemplo, esta query recria o formato de outro servidor GraphQL:

{
  categories: self {
    edges: postCategories {
      node: self {
        name
        slug
      }
    }
  }
}

Esta query recria o formato da WP REST API:

{
  post(by: {id: 1}) {
    content: self {
      rendered: content
    }
  }
}

Adicionando campos self aos endpoints

A adição de campos self ao schema pode ser configurada da seguinte forma, em ordem de prioridade:

Modo específico para o custom endpoint ou persisted query, definido na configuração do schema

Adicionando campos self ao schema, configurado na Schema configuration

Modo padrão, definido nas Configurações

Se a configuração do schema tiver o valor "Default", será utilizado o modo definido nas Configurações:

Configuração dos campos self para a schema configuration, nas Configurações
Configuração dos campos self para a schema configuration, nas Configurações

Quando usar

O campo self pode ser usado para adaptar o formato da resposta GraphQL a um formato específico exigido, como o de outro servidor GraphQL, ou da API REST.