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

Modo por defecto, definido en los Ajustes
Si la configuración del esquema tiene el valor "Default", utilizará el modo definido 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.