Configurer le schéma
Configurer le schémaInterroger les champs 'self'

Interroger les champs 'self'

Parfois, nous devons modifier la forme de la réponse, pour émuler la même réponse d'un autre serveur GraphQL, ou de l'API REST.

Nous pouvons faire cela via le champ self, ajouté à tous les types dans le schéma GraphQL, qui renvoie le même objet là où il est appliqué :

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

Comment ça fonctionne

Le champ self permet d'ajouter des niveaux supplémentaires à la requête sans quitter l'objet interrogé. En exécutant cette requête :

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

...on obtient cette réponse :

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

Comment utiliser

Utilisez self pour ajouter artificiellement les niveaux supplémentaires nécessaires à la réponse, et des alias de champ pour renommer ces niveaux de manière appropriée.

Par exemple, cette requête recrée la forme d'un autre serveur GraphQL :

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

Cette requête recrée la forme de la WP REST API :

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

Ajouter des champs self aux endpoints

L'ajout de champs self au schéma peut être configuré comme suit, par ordre de priorité :

Mode spécifique pour le custom endpoint ou la persisted query, défini dans la configuration du schéma

Ajout de champs self au schéma, configuré dans la Schema configuration

Mode par défaut, défini dans les Réglages

Si la configuration du schéma a la valeur "Default", elle utilisera le mode défini dans les Réglages :

Configuration des champs self pour la schema configuration, dans les Réglages
Configuration des champs self pour la schema configuration, dans les Réglages

Quand utiliser

Le champ self peut être utilisé pour adapter la forme de la réponse GraphQL à une forme particulière requise, telle que celle d'un autre serveur GraphQL, ou de l'API REST.