Configurare lo schema
Configurare lo schemaInterrogare i campi 'self'

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

Aggiunta di campi self allo schema, configurata nella Schema configuration

Modalità predefinita, definita nelle Impostazioni

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

Configurazione dei campi self per la schema configuration, nelle Impostazioni
Configurazione dei campi self per la schema configuration, 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.