GraphQL Nedir?

İçindekiler

  • GraphQL Nedir?
  • GraphQL vs REST API
  • GraphQL’in Avantaj ve Dezavantajları
  • Referanslar

GraphQL Nedir?

GraphQL, verilerin nasıl isteneceğini açıklayan bir sorgu dilidir. Veri sorgulamak ve değiştirmek amacıyla kullanılan bir API yapısıdır. Belirli bir veri tabanına veya veri tabanı motoruna (database engine) bağlı değildir. Sunucu tarafında çalıştırılan (server-side runtime) bir teknolojidir ve istemci ile sunucu arasında bir ara katman olarak konumlanır.

GraphQL, HTTP üzerinden iletişim kurmanın yanı sıra, diğer protokoller ve ağ teknolojileri üzerinde de çalışabilir. Ancak, HTTP, GraphQL API’leri için en yaygın ve tavsiye edilen iletişim protokolüdür.

GraphQL, SQL‘in veri tabanlarındaki çalışma mantığına benzetilebilir. SQL, veri tabanı üzerinde kullanılan bir sorgulama diliyken, GraphQL web uygulamaları ve hizmetleri arasında veri alışverişi yapmak için kullanılan bir sorgu dilidir. SQL’de birden çok tablodan belirli alanları seçtiğiniz gibi, GraphQL’de de bir işlem (örneğin, bir sorgu) ile istediğiniz tüm verileri tek bir istekte alabilirsiniz.

GraphQL, birden fazla endpoint yerine tek bir endpoint kullanarak verilerin çıktısını istemcinin istediği şekilde iletmek amacıyla ortaya çıktı. Örneğin, REST API kullanarak pizza siparişi vermek, bakkaldan alışveriş yapmak ve kuru temizlemeciden kıyafetlerinizi almak için üç farklı dükkana gitmek ve üç ayrı telefon görüşmesi yapmak zorunda kalırsınız. GraphQL ise, bir kişisel asistanınızın olması gibidir. GraphQL’e bu yerlerin adreslerini verirsiniz ve sadece ne istediğinizi söyleyip isteklerinizin gelmesini beklersiniz.

REST API vs GraphQL

REST API ile bir istek sonucunda alınan veri, uygulamanın ihtiyacı olan tüm veriyi içermeyebilir (under fetching) veya ihtiyacından daha fazla veri içerebilir (over fetching). GraphQL ise istenen veriyi eksiksiz ve istenilen şekilde sağlar, ayrıca istendiği takdirde daha fazla veri de sunabilir.

  • REST API, kaynaklara odaklanan bir mimari tarzdır. Her kaynak genellikle bir URL (Uniform Resource Locator) ile tanımlanır. Örneğin, /users URL’i tüm kullanıcıları, /products/{id} URL’i ise belirli bir ürünü temsil eder.
  • GraphQL ise URL tabanlı olmayan bir yaklaşım benimser. Kaynaklar, bir GraphQL şeması kullanılarak tanımlanır. Bu şema, veri tabanındaki veya diğer veri kaynaklarındaki verilerin nasıl yapılandırılacağını ve erişilebilecek alanları tanımlar. GraphQL sunucusu bu şemayı sağlar ve istemciler bu şemaya göre sorgu yaparlar.

REST API’sinde, her bir kaynağın sunulma şeklini API sağlayıcısı belirler. Kaynaklar genellikle sunucu tarafından tanımlanan endpoint üzerinden sağlanır. Örneğin:

  • /users endpoint’i tüm kullanıcıları listeler.
  • /products/{id} endpoint’i belirli bir ürünün detaylarını getirir.

GraphQL‘de ise istemci, sorgu sırasında hangi veri alanlarının dahil edileceğine karar verir. Örneğin, bir kullanıcı için sadece adını ve e-posta adresini almak istiyorsanız, GraphQL sorgusunu buna göre oluşturur ve yalnızca bu alanlar getirilir.

Avantajlar ve Dezavantajlar

GraphQL’in Avantajları

  1. Spesifik Veri Alımı: GraphQL, istemcilerin yalnızca ihtiyaç duyduğu veriyi spesifik olarak belirtmelerine izin verir. Bu özellik, over-fetching ve under-fetching sorunlarını önler, ağ trafiğini azaltır ve uygulama performansını artırır.
  2. Tek Sorgu, Çok Veri: Karmaşık veri ilişkilerini tanımlayan şemalar sayesinde, tek bir GraphQL sorgusuyla birden fazla veri alımı gerçekleştirilebilir. Bu özellikle büyük veri setleri üzerinde çalışırken avantaj sağlar.
  3. Gerçek Zamanlı Bildirimler ve Veri Değişiklikleri: GraphQL, mutations ve subscriptions gibi özellikleriyle, veri değişikliklerini ve gerçek zamanlı bildirimleri doğal bir şekilde destekler. Bu, uygulamaların kullanıcı deneyimini zenginleştirir.

GraphQL’in Dezavantajları

  1. Daha Ağır Araç Desteği: GraphQL, REST’e kıyasla daha ağır bir araç desteği gerektirir. Hem istemci hem de sunucu tarafında ekstra kütüphaneler ve araçlar gerekir. Bu, özellikle küçük projelerde ekstra bir yük oluşturabilir.
  2. Önbellekleme Sorunları: GraphQL’in önbellekleme konusunda REST API’ye göre zorlukları olabilir. Özellikle büyük veri setleri ve sık güncellenen verilerde performans sorunlarına yol açabilir.
  3. Gereksiz Karmaşıklık: Özellikle basit CRUD (Create, Read, Update, Delete) işlemleri için, GraphQL ekstra bir karmaşıklık getirebilir. Bu tür işlemler için REST API daha basit ve uygun bir alternatif olabilir.

Referanslar

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Benzer yazılar

Aramak istediğinizi üstte yazmaya başlayın ve aramak için enter tuşuna basın. İptal için ESC tuşuna basın.

Üste dön