GraphQL ve Gato GraphQL'e Giriş
Gato GraphQL kılavuzlarına hoş geldiniz. Burada WordPress sitenizde Gato GraphQL eklentisini kurma, yapılandırma ve kullanma hakkında pek çok bilgi bulacaksınız.
GraphQL Nedir
GraphQL, istemcilerin (tarayıcıdaki web sitesi veya bir mobil uygulama gibi) tam olarak hangi verilere ihtiyaç duyduklarını belirtmelerine olanak tanıyan ve API'yi uygulayan sunucunun tam olarak o verileri getireceği bir API spesifikasyonudur.
Bir GraphQL queries şu şekilde görünür:
query {
posts {
id
title
content
author {
id
name
}
}
}Sunucudan gelen yanıt, queries ile aynı yapıda veri içeren JSON formatındadır. Şu şekilde görünür:
{
"data": {
"posts": [
{
"id": 1,
"title": "Hello world",
"content": "<p>How are you doing?</p>",
"author": {
"id": 1,
"name": "Leo"
}
},
{
"id": 2,
"title": "Scheduled post",
"content": "<p>This post is scheduled to be published in the future.</p>",
"author": {
"id": 2,
"name": "Markus"
}
},
{
"id": 3,
"title": "Lorem ipsum",
"content": "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>",
"author": {
"id": 3,
"name": "Socrates"
}
}
]
}
}GraphQL sunucuları ayrıca veriyi "dönüştürebilir" (yani oluşturabilir ve güncelleyebilir). Bu durumda query işlem anahtar kelimesi mutation ile değiştirilmelidir:
mutation {
createPost(input: {
title: "New post",
contentAs: { html: "Lorem ipsum dolor sit amet" }
}) {
id
status
}
}Resmi GraphQL sitesini graphql.org adresinden ziyaret edin.
Gato GraphQL Nedir
Gato GraphQL, WordPress için bir eklentidir; siteyi bir GraphQL sunucusuna dönüştürerek GraphQL dili kullanılarak WordPress sitesinden veri almanıza ve değiştirmenize olanak tanır.
Gato GraphQL şu özelliklere sahip olmayı hedefler:
Kullanımı Kolay
WordPress felsefesi, teknik becerilere sahip olup olmadığına bakılmaksızın herkesin yazılımı kullanabilmesi gerektiğidir. Eklenti, bir API oluşturmayı ve onunla etkileşimi mümkün olduğunca kolaylaştırarak bu felsefeyi karşılamaya çalışır.
Örneğin, Gato GraphQL; WordPress düzenleyicisinin sağladığı kullanıcı arayüzünü kullanarak persisted queries yayımlamayı (önceden tanımlanmış verileri sunan, REST endpoint'lerine benzer endpoint'ler) mümkün kılar; bir gönderi yazmak gibi, herkese açıktır.
Hızlı
Bir GraphQL queries çözümlemek genellikle, sorgulanan tüm varlıkların verilerini içeren bir grafik üzerinde yineleme yapmayı gerektirir. Grafikteki düğüm sayısı ve derinliği arttıkça bu süreç giderek daha yavaş tamamlanır (hatta üstel olarak yavaşlar).
Gato GraphQL farklı bir yaklaşım benimser: GraphQL queries'i çözmek için (bir grafik yerine) bileşen modeli yapısını kullanır; bu, queries derinliğine bağlı olarak doğrusal büyüyen (üstel değil) bir süreci içerir.
Ayrıca, GraphQL schema'sının tamamı değil, yalnızca GraphQL queries'inde istenen schema öğeleri derlenir, doğrulanır ve çalıştırılır. Sonuç olarak, WordPress sitenizde 3 veya 30 Custom Post Type yüklü olmasından bağımsız olarak queries çözümleme süresi aynı olacaktır.
Güçlü
API'ler, istemcinin sunucuyla etkileşime girdiği ana ağ geçidi işlevi görür; bir API'nin herhangi bir konuda kısıtlı olmaması, her gereksinimi karşılayabilmesi açısından önemlidir.
Bu eklenti, özel işlevler, harici API'ler ve bulut tabanlı hizmetler aracılığıyla bir queries çalıştırmanın sonuçlarını değiştirmeye olanak tanır. Sorgulanan veriler gerektiği gibi yinelenip işlenebilir; queries çıktısı da istenilen herhangi bir biçimde değiştirilebilir; dolayısıyla neredeyse yapılamayacak bir şey yoktur.
Güvenli
Bir GraphQL API kolayca yanlış yönetilebilir; WordPress sitesindeki tüm verilere kötü niyetli aktörler dahil herkesin erişimini açığa çıkarabilir. GraphQL sunucusunun, yalnızca yetkili kullanıcıların verilere eriştiğinden emin olmak için uygun güvenlik önlemleri sağlaması gerekir.
Bu eklenti güvenliği çok ciddiye alır ve yerel olarak çeşitli güvenlik önlemleri uygulamıştır. Tek endpoint devre dışı bırakılabilir; veriler persisted queries aracılığıyla sunulabilir; verilere erişim yetkisi, yapılandırılabilir erişim kontrol listeleri aracılığıyla verilir (kullanıcının oturum açıp açmadığına, belirli bir rol veya yetkiye sahip olup olmadığına ya da özel bir kurala göre); API ise genel veya özel olarak tanımlanabilir.
İleriye Dönük
GraphQL, gelişmeye devam eden bir standarttır ve topluluk, gelecekte spesifikasyona eklenecek yeni işlevler sunmak için sürekli fikir önermektedir.
Bu eklenti beklemeyi sevmez; önerilmiş pek çok yeni işlevi (şema ad alanları, çoklu queries çalıştırma ve diğerleri gibi) halihazırda isteğe bağlı özellikler olarak içermektedir; dolayısıyla bunların yönetici tarafından açıkça etkinleştirilmesi gerekir.