Interrogare i campi 'self'
A volte è necessario modificare la forma della risposta, per emulare la stessa risposta di un altro server GraphQL, o dell'API REST.
Possiamo farlo tramite il campo self, aggiunto a tutti i tipi nello schema GraphQL, che restituisce lo stesso oggetto dove viene applicato:
type QueryRoot {
self: QueryRoot!
}
type Post {
self: Post!
}
type User {
self: User!
}Come funziona
Il campo self consente di aggiungere livelli extra alla query senza abbandonare l'oggetto interrogato. Eseguendo questa query:
{
__typename
self {
__typename
}
post(by: {id: 1}) {
self {
id
__typename
}
}
user(by: {id: 1}) {
self {
id
__typename
}
}
}...si ottiene questa risposta:
{
"data": {
"__typename": "QueryRoot",
"self": {
"__typename": "QueryRoot"
},
"post": {
"self": {
"id": 1,
"__typename": "Post"
}
},
"user": {
"self": {
"id": 1,
"__typename": "User"
}
}
}
}Come utilizzarlo
Usa self per aggiungere artificialmente i livelli extra necessari alla risposta, e gli alias di campo per rinominare quei livelli in modo appropriato.
Ad esempio, questa query ricrea la forma di un altro server GraphQL:
{
categories: self {
edges: postCategories {
node: self {
name
slug
}
}
}
}Questa query ricrea la forma della WP REST API:
{
post(by: {id: 1}) {
content: self {
rendered: content
}
}
}Aggiungere campi self agli endpoint
L'aggiunta di campi self allo schema può essere configurata come segue, in ordine di priorità :
Modalità specifica per il custom endpoint o la persisted query, definita nella configurazione dello schema

Modalità predefinita, definita nelle Impostazioni
Se la configurazione dello schema ha il valore "Default", verrà utilizzata la modalità definita nelle Impostazioni:

Quando utilizzarlo
Il campo self può essere utilizzato per adattare la forma della risposta GraphQL a una forma particolare richiesta, come quella di un altro server GraphQL, o dell'API REST.