Konfigurowanie schematu
Konfigurowanie schematuZapytania o pola 'self'

Zapytania o pola 'self'

Czasami musimy zmodyfikować kształt odpowiedzi, aby emulować tę samą odpowiedź z innego serwera GraphQL lub z API REST.

Możemy to zrobić za pomocą pola self, dodanego do wszystkich typów w schemacie GraphQL, które zwraca ten sam obiekt, na którym jest stosowane:

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

Jak to działa

Pole self pozwala dodawać dodatkowe poziomy do queries bez opuszczania odpytywanego obiektu. Uruchomienie tego query:

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

...daje tę odpowiedź:

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

Jak używać

Użyj self, aby sztucznie dodać dodatkowe poziomy potrzebne w odpowiedzi, oraz aliasów pól, aby odpowiednio je nazwać.

Na przykład to query odtwarza kształt innego serwera GraphQL:

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

To query odtwarza kształt WP REST API:

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

Dodawanie pól self do endpointów

Dodawanie pól self do schematu można skonfigurować w następujący sposób, w kolejności priorytetu:

Tryb specyficzny dla custom endpoint lub persisted query, zdefiniowany w konfiguracji schematu

Dodawanie pól self do schematu, ustawione w konfiguracji schematu

Tryb domyślny, zdefiniowany w Ustawieniach

Jeśli konfiguracja schematu ma wartość "Default", zostanie użyty tryb zdefiniowany w Ustawieniach:

Ustawianie pól self dla konfiguracji schematu, w Ustawieniach
Ustawianie pól self dla konfiguracji schematu, w Ustawieniach

Kiedy używać

Pole self może być używane do dostosowania kształtu odpowiedzi GraphQL do określonego wymaganego formatu, takiego jak format z innego serwera GraphQL lub z API REST.