Bizde data ortaya konur. Herkes ihtiyacı kadarını alır. #GraphQL pic.twitter.com/iegLlfPI2G
— Aşkın Gedik (@askngdk) February 26, 2017
GraphQL; Facebook tarafından geliştirilen, API’ler için bir data sorgulama dili olarak tanımlanabilir. Yani GraphQL sorgunuz ile (backend tarafında tanımlanan)dataya client üzerinden şekil verebiliyorsunuz. Dönen dataya şekil verdiğiniz için daha ürün ve ihtiyaç odaklı bir yapıya sahip, client’lar için daha esnek bir yapı sunuyor.
API ile dönen data içerisinde ihtiyacınız olmayan onlarca veri olabiliyor ve bu size kilobaytlar kaybettiriyor. Örneğin github v3 API’sini kullanarak bir kişiye ait repo isimlerini listeleyen bir app yazmak istediğimizde gelen dataya (104 KB) ve github’ın v4 graphql API’si ile deneyebileceğiniz aşağıdaki graphql sorgusunun çıktısına (3 KB) bakın.
GraphQL üzerinde tip sistemi mevcut. (Strongly typed) Tip sistemi olduğu için bir GraphQL sorgusunun geçerli olup olmadığı önceden belirlenebilir.
Vereceğiniz alias’lar ile API’den dönen json’ı şöyle bir formata dahi dönüştürebilirsiniz. Dönen cevap zorunuza mı gidiyor basın alias’ı.
GraphQL, istediğiniz verileri getirmek için birden fazla REST isteğini tek bir sorgu ile değiştirmenize olanak sağlar. Örneğin twitter anasayfasını inceleyelim.
- 1 - Profil bilginiz
- 2 - Takip etmeniz için önerilen kişiler
- 3 - Akış üzerindeki twitler
- 4 - Gündem
Her bir endpointten data çekmek için sorgu atılıyor bunun yerine graphql ile kaba taslak aşağıdaki gibi bir şeyler yazıp tek bir sorgu ile istediğimiz datayı istediğimiz formatta elde edebiliriz.
Dikkatinizi çekmek istediğim iki şey var burada. İlk olarak ortak kullandığım user alanları için bir fragment
tanımlayarak DRY hale getirdim. Diğer nokta ise tweets
ve suggestions
field resolver’ına parametre geçtim.
Bunları diğer blog yazılarımda ayrıntılı aktaracağım. Şimdilik hoş, kolay kullanımına bir göz atmanızı istedim. Gerisi kolayca anlaşılabiliyor zaten json’ın sadece key’lerinin olduğu bir şey gibi.
GraphQL içinde bulunan şemanızdan otomatik oluşturulan introspection sayesinde hangi sorguların nasıl desteklendiğini kendisi dokümante ediyor. Örneğin: Github API v4’ü deneyebileceğiniz graphiql editorünün sağ kısmındaki dokümanı inceleyebilirsiniz.
Şu an github, shopify, facebook, coursera, yelp, protel(🙃) gibi birçok şirket graphql kullanıyor ve destekliyor.
Kullanmanız için en önemli bir diğer sebep ise şu an oldukça HYPE bir teknoloji olması. Ortamlarda ağğbii siz hala mı rest yazıyorsunuz? ya ne gada çağ dışısınız
diyebilirsiniz.
Okuduğunuz için Tşk.