Configurar el esquema
Configurar el esquemaConsultar campos 'self'

Consultar campos 'self'

A veces necesitamos modificar la forma de la respuesta, para emular la misma respuesta de otro servidor GraphQL, o de la API REST.

Podemos hacer esto mediante el campo self, añadido a todos los tipos en el esquema GraphQL, que devuelve el mismo objeto donde se aplica:

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

Cómo funciona

El campo self permite añadir niveles extra a la consulta sin abandonar el objeto consultado. Ejecutando esta consulta:

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

...produce esta respuesta:

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

Cómo usar

Utiliza self para añadir artificialmente los niveles extra necesarios para la respuesta, y los alias de campo para renombrar esos niveles adecuadamente.

Por ejemplo, esta consulta recrea la forma de otro servidor GraphQL:

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

Esta consulta recrea la forma de la WP REST API:

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

Añadir campos self a los endpoints

La adición de campos self al esquema puede configurarse de la siguiente manera, por orden de prioridad:

Modo específico para el custom endpoint o persisted query, definido en la configuración del esquema

Añadiendo campos self al esquema, configurado en la Schema configuration

Modo por defecto, definido en los Ajustes

Si la configuración del esquema tiene el valor "Default", utilizará el modo definido en los Ajustes:

Configurando campos self para la schema configuration, en los Ajustes
Configurando campos self para la schema configuration, en los Ajustes

Cuándo usar

El campo self puede utilizarse para adaptar la forma de la respuesta GraphQL a alguna forma concreta requerida, como la de otro servidor GraphQL, o la de la API REST.