'self' alanlarını sorgulama
Bazen yanıtın şeklini değiştirmemiz gerekir; başka bir GraphQL sunucusundan ya da REST API'den gelen yanıtı taklit etmek için.
Bunu, GraphQL şemasındaki tüm türlere eklenen ve uygulandığı nesneyi olduğu gibi geri döndüren self alanı aracılığıyla yapabiliriz:
type QueryRoot {
self: QueryRoot!
}
type Post {
self: Post!
}
type User {
self: User!
}Nasıl çalışır
self alanı, sorgulanan nesneden ayrılmadan queries'e ekstra düzeyler eklemenizi sağlar. Bu query çalıştırıldığında:
{
__typename
self {
__typename
}
post(by: {id: 1}) {
self {
id
__typename
}
}
user(by: {id: 1}) {
self {
id
__typename
}
}
}...şu yanıt üretilir:
{
"data": {
"__typename": "QueryRoot",
"self": {
"__typename": "QueryRoot"
},
"post": {
"self": {
"id": 1,
"__typename": "Post"
}
},
"user": {
"self": {
"id": 1,
"__typename": "User"
}
}
}
}Nasıl kullanılır
Yanıt için gereken ekstra düzeyleri yapay olarak eklemek amacıyla self kullanın; bu düzeyleri uygun şekilde yeniden adlandırmak için alan takma adlarından yararlanın.
Örneğin, bu query başka bir GraphQL sunucusunun şeklini yeniden oluşturur:
{
categories: self {
edges: postCategories {
node: self {
name
slug
}
}
}
}Bu query ise WP REST API'nin şeklini yeniden oluşturur:
{
post(by: {id: 1}) {
content: self {
rendered: content
}
}
}Endpoint'lere self alanları ekleme
Şemaya self alanları eklenmesi aşağıdaki şekilde yapılandırılabilir; öncelik sırasına göre:
✅ Şema yapılandırmasında tanımlanan özel endpoint veya persisted query için özel mod

✅ Ayarlarda tanımlanan varsayılan mod
Şema yapılandırmasının değeri "Default" ise Ayarlarda tanımlanan mod kullanılır:

Ne zaman kullanılır
self alanı, GraphQL yanıtının şeklini başka bir GraphQL sunucusundan veya REST API'den gelene benzer belirli bir şekle uyarlamak için kullanılabilir.