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

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 :

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.