GraphQL vs Rest

October 15, 2020

Bu yazımda GraphQL nedir ? Rest ile işlemlerimizi yapıyorken neden GraphQL ihtiyaç duyuyoruz ? Farkları nelerdir ? Bu konuları anlatmaya çalışacağım.

GraphQL yeni bir buluş yeni bir mimari değildir. Rest yapısının kısıtlamalarını ortadan kaldıran yeni bir bakış açısı yeni bir yapı diyebiliriz. Rest Mimarisinde, backend tarafında çalışan developer endpointleri hazırlar. Ön yüz tarafında çalışan developer ise bu endpointlere gönderdiği istekler ile işlemlerini yapardı. Ama GraphQL ile ön yüz tarafında çalışan arkadaşa bir sorgulama arayüzü oluşturulması sağlandı.

Şimdi daha detaylı bir şekilde GraphQL bize sağladığı avantajlardan bahsedelim. Öncelikle elimizde users ve books adında modellerimiz olduğunu düşünelim.

api/users

Bu enpointten bize users ait firstName, lastName, age, birthdate … gibi uzayıp giden alanlar dönüyor. Ama biz sadece firstName ve age kullanacağız. İşte GraphQL de aşağıdaki query gibi sadece istediğimiz alanları alıp ( firstName, age ) işliyoruz. Rest yapısında ki gibi bütün veriyi çekmemize gerek yok.

query {
  users {
  firstName
  age
 }
}

Evet böylece GraphQL bize sağladığı kolaylıklardan birisini görmüş olduğunuz. Şimdi diğer avantajlarını anlatmaya devam edelim.

api/users api/books/user_id

Yukarıda belirttiğim gibi 2 tane endpointte sahibiz. İlk endpointte sistemimizde kayıtlı kullanıcıları çekiyoruz. Diğer endpointte ise bu kullanıcıların okuduğu kitapları user_id göre alıyoruz. Böylece ön yüzümüzde bu verileri gerektiği şekilde kullanıyoruz. Sonuçta 2 kez sunucuya istek yapmış olduk. GraphQL de peki bu işlemi nasıl yapabiliriz.

query {
  users {
  firstName
  age
  books {
    name
  }
 }
}

Sunucu tarafına tek bir istek ve yukarıda yazdığım query ile bu işlemi çözebiliriz. Buda GraphQL bize sağladığı avantajlardan bir diğeri idi.

  • Bir api geliştirdiğimizde bu api nin mobil ve frontend ekipleri tarafından kullanılabilmesi için dokümantasyon hazırlamamız gerekiyor ama GraphQL ile api geliştirirken ayrıca dokümantasyon hazırlamamıza da gerek kalmıyor. Çünkü kendi hazır dokümantasyonu biz api geliştirirken oluşturuluyor. Biz de hazır dokümantasyonu kullanabiliriz.
  • GraphQL ile ayrıca subscriptions denilen yapı sayesinde real time api oluşturulabilir.

Yazımın burada sonuna geliyorum. Sizlere GraphQL konusunu çok temel düzeyde anlatmaya çalıştım. Tabiki de çok derin ve üzerinde çalışılması gereken bir konu. En azından bir fikir sahibi olduğunuzu düşünüyorum.

Node JS, Express JS, GraphQL, Apollo Server, Apollo Client ve React JS ile geliştirdiğim bir projeye buradan ulaşabilirsiniz. Projede GraphQL, Apollo Server ve Apollo Client nasıl kullanıldığını inceleyebilirsiniz.

Diğer yazılarımda görüşmek üzere…

Share: