Das Schema konfigurieren
Das Schema konfigurieren'self'-Felder abfragen

'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

self-Felder zum Schema hinzufügen, konfiguriert 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:

self-Felder für die Schema-Konfiguration in den Einstellungen festlegen
self-Felder für die Schema-Konfiguration in den Einstellungen festlegen

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.