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

Tryb domyślny, zdefiniowany w Ustawieniach
Jeśli konfiguracja schematu ma wartość "Default", zostanie użyty tryb zdefiniowany 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.