İçeriğe geç
parazade

GraphQL Nedir?

Yayın: · Son güncelleme:

GraphQL Nedir? Kısaca

GraphQL, istemcinin bir API'den tam olarak hangi verileri istediğini tek bir sorguyla belirtmesini sağlayan sorgu dili ve çalışma ortamıdır. Facebook'ta geliştirildi, 2015'te açık kaynak olarak yayımlandı.

GraphQL nedir?
İçindekiler
  1. GraphQL nedir?
  2. REST ile farkı ne?
  3. Ne zaman tercih edilmeli?

GraphQL, API'lere "bana şu alanları getir" diyebildiğiniz bir sorgu dilidir. Sunucu, gereğinden fazlasını ya da eksiğini değil, tam olarak istenen veriyi döner. Fazlası yok.

GraphQL nedir?

REST'te her kaynak için ayrı adresler bulunur ve her adres sabit bir veri yapısı döndürür. GraphQL'de ise genellikle tek bir uç nokta vardır, örneğin /graphql. İstemci, hangi kayıttan hangi alanları istediğini, ilişkili kayıtlara ne kadar derin inmek istediğini ve sonuçların nasıl gruplanacağını sorgunun içinde tek seferde tarif eder.

Varsayımsal bir sorgu:

{
  urun(id: 42) {
    ad
    fiyat
    yorumlar { puan }
  }
}

Bu istek, 42 numaralı ürünün yalnızca adını, fiyatını ve yorum puanlarını getirir. REST'te aynı bilgi için ürün ve yorumlar adlarına iki ayrı istek atmak, üstelik kullanılmayacak alanları da indirmek gerekebilirdi.

REST ile farkı ne?

Konu REST GraphQL
Uç nokta Kaynak başına bir adres Genellikle tek adres
Dönen veri Sunucu belirler İstemci seçer
Şema İsteğe bağlı Zorunlu ve tipli

Şema, API'de hangi tiplerin ve alanların bulunduğunu kesin biçimde tanımlar. Bu sayede araçlar sorguları yazarken otomatik tamamlama ve hata kontrolü sunabilir.

Ne zaman tercih edilmeli?

Mobil uygulamalar ve karmaşık ekranlar, az veriyle çok bilgi göstermek istediğinde GraphQL avantaj sağlar. Basit ve az sayıda kaynağı olan bir API için ise ek karmaşıklık getirebilir.

Dikkat edilmesi gereken nokta, istemcinin çok derin ve pahalı sorgular gönderebilmesidir. Sorgu derinliği ve karmaşıklığı için sınır koymak, sunucuyu aşırı yükten korur. HTTP önbelleklemesi de REST'e göre daha fazla emek ister.

Sıkça Sorulan Sorular

GraphQL bir veritabanı mı?

Hayır, GraphQL bir veritabanı değil, API için sorgu dilidir. Arkasında herhangi bir veritabanı, başka API'ler ya da dosyalar olabilir.

GraphQL REST'in yerini alacak mı?

İkisi farklı ihtiyaçlara cevap verir ve birlikte kullanılmaya devam ediyor. Birçok şirket bazı servislerinde REST, bazılarında GraphQL tercih ediyor.

İlgili terimler

REST APIREST API, uygulamaların HTTP protokolü üzerinden ve genellikle JSON biçiminde veri alışverişi yaptığı, REST mimari ilkelerine dayanan uygulama programlama arayüzüdür. Web'de en yaygın API türüdür.RESTfulRESTful, REST mimari ilkelerine uygun biçimde tasarlanmış sistemleri ve API'leri tanımlayan sıfattır. RESTful bir API kaynakları anlamlı adreslerle sunar ve işlemleri HTTP metotlarıyla ifade eder.API(Application Programming Interface)API (Application Programming Interface, uygulama programlama arayüzü), farklı yazılımların önceden tanımlanmış kurallarla birbirine istek gönderip cevap almasını sağlayan arayüzdür. Yapay zekâ modelleri de çoğu zaman API üzerinden kullanılır.JSONJSON (JavaScript Object Notation), verileri anahtar-değer çiftleri ve listeler hâlinde, hem insanların hem makinelerin kolayca okuyabileceği metin biçiminde saklayan ve taşıyan veri formatıdır.Sunucu(Server)Sunucu (server), ağ üzerinden başka bilgisayarlara ve cihazlara veri, dosya, web sayfası ya da uygulama hizmeti sağlayan bilgisayar veya yazılımdır. İstek gönderen tarafa istemci denir.Sabit(Constant)Sabit (constant), programlamada bir kez değer atandıktan sonra program boyunca değiştirilmemesi gereken isimli veridir. Pi sayısı, bir vergi oranı ya da en fazla deneme hakkı gibi değerler sabit olarak tanımlanır.İstemci(Client)İstemci (client), bir ağ üzerinden sunucuya istek gönderip ondan veri veya hizmet alan cihaz ya da yazılımdır. Web tarayıcısı, mobil uygulama ve e-posta programı yaygın istemci örnekleridir.HTTPHTTP (Hypertext Transfer Protocol), tarayıcı gibi istemciler ile web sunucuları arasında web sayfası, görsel ve veri alışverişini düzenleyen iletişim protokolüdür. İstek ve yanıt mantığıyla çalışır.