GraphQL Nedir?

Yönetici
Yönetim Kurulu Başkanı
Chairman of the Board
Katılım
10 Nisan 2025
Mesajlar
742
Reaksiyon puanı
81
GraphQL, API’ler için veri sorgulama ve manipülasyon dili olup aynı zamanda sunucu tarafında çalışan bir çalışma zamanıdır. 2012 yılında Facebook tarafından geliştirilen ve 2015’te açık kaynak yapılan GraphQL, REST API'lere alternatif olarak ortaya çıkmıştır. Temel amacı, istemcinin (client) ihtiyaç duyduğu veriyi tam ve eksiksiz bir şekilde, gereksiz fazlalık olmadan alabilmesini sağlamaktır.

GraphQL’in Temel Özellikleri​

  1. İstemci Odaklı Sorgulama:
    GraphQL’de istemci, ne tür veriye ihtiyacı olduğunu açıkça belirtir. Bu sayede yalnızca gerekli alanlar sunucudan çekilir. Bu özellik, özellikle mobil uygulamalarda veri tasarrufu ve hız açısından büyük avantaj sağlar.
  2. Tek Endpoint (Tek Uç Nokta):
    REST API'lerde her kaynak için farklı URL'ler gerekirken, GraphQL sadece tek bir endpoint üzerinden çalışır. Bu da yönetimi kolaylaştırır.
  3. Veri Şekillendirme:
    GraphQL ile karmaşık veri yapıları (örneğin: bir kullanıcı ve o kullanıcının yazdığı yazılar) tek bir istekle alınabilir. REST'te bu genellikle birden fazla istekle yapılmak zorundadır.
  4. Güçlü Tip Sistemi:
    GraphQL, şemaya dayalıdır. API’nin sunduğu veri yapıları açıkça tanımlanır ve istemciler bu şemaya göre sorgulama yapar.

GraphQL Sorgu Yapısı​

GraphQL’de sorgular, JSON benzeri bir yapıyla yapılır. Örneğin bir kullanıcının sadece adı ve e-postasını almak istiyorsanız:
graphql
KopyalaDüzenle
Kod:
{
  user(id: "1") {
    name
    email
  }
}
Bu sorgu sonucunda sadece name ve email bilgileri döner, ekstra hiçbir veri alınmaz.

REST ve GraphQL Karşılaştırması​

ÖzellikRESTGraphQL
Endpoint yapısıÇoklu endpointTek endpoint
Veri aktarımıSabit yapılıİstemci tarafından belirlenir
Aşırı veya eksik veriSık görülürGerekli veri kadar alınır
VersiyonlamaURL ile yapılır (/v1/, /v2/)Gerekmez; şema ile kontrol edilir

Kullanım Alanları​

GraphQL, özellikle şu durumlarda çok tercih edilir:
  • Mobil uygulamalar (düşük veri tüketimi için)
  • Modern web uygulamaları (React, Angular, Vue gibi)
  • Mikro
 
Üst