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, 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.