'self'-Felder abfragen
Manchmal müssen wir die Form der Antwort ändern, um die gleiche Antwort eines anderen GraphQL-Servers oder der REST API nachzuahmen.
Das geht über das Feld self, das allen Typen im GraphQL-Schema hinzugefügt wird und das gleiche Objekt zurückgibt, auf das es angewendet wird:
type QueryRoot {
self: QueryRoot!
}
type Post {
self: Post!
}
type User {
self: User!
}Wie es funktioniert
Das Feld self ermöglicht es, der Query zusätzliche Ebenen hinzuzufügen, ohne das abgefragte Objekt zu verlassen. Wenn du diese Query ausführst:
{
__typename
self {
__typename
}
post(by: {id: 1}) {
self {
id
__typename
}
}
user(by: {id: 1}) {
self {
id
__typename
}
}
}...erhältst du diese Antwort:
{
"data": {
"__typename": "QueryRoot",
"self": {
"__typename": "QueryRoot"
},
"post": {
"self": {
"id": 1,
"__typename": "Post"
}
},
"user": {
"self": {
"id": 1,
"__typename": "User"
}
}
}
}Verwendung
Nutze self, um der Antwort künstlich die benötigten zusätzlichen Ebenen hinzuzufügen, und Feld-Aliase, um diese Ebenen entsprechend umzubenennen.
Zum Beispiel bildet diese Query die Form eines anderen GraphQL-Servers nach:
{
categories: self {
edges: postCategories {
node: self {
name
slug
}
}
}
}Diese Query bildet die Form der WP REST API nach:
{
post(by: {id: 1}) {
content: self {
rendered: content
}
}
}self-Felder zu den Endpoints hinzufügen
Das Hinzufügen von self-Feldern zum Schema kann wie folgt konfiguriert werden, in der Reihenfolge der Priorität:
Spezifischer Modus für den Custom Endpoint oder die Persisted Query, definiert in der Schema-Konfiguration

Standardmodus, definiert in den Einstellungen
Wenn die Schema-Konfiguration den Wert "Default" hat, wird der in den Einstellungen definierte Modus verwendet:

Wann verwenden
Das Feld self kann verwendet werden, um die Form der GraphQL-Antwort an eine bestimmte benötigte Form anzupassen, wie z. B. die eines anderen GraphQL-Servers oder der REST API.