GraphQL diyor ki,

"Hey, bu çekimi yapmak için bir şansın var. Telefonumu sadece bir kez arayabilirsin. Peki ne zaman olacak?"

Ancak, REST API diyor ki,

"Bebeğim, beni istediğin kadar arayabilirsin. Ben ısırmam."

Örneğin, bir kullanıcı adı, yaş ve ten rengini almak istediğinizi varsayalım:

Bir REST API için istek ve JSON yanıtı aynı anda şöyle olacaktır:

İsim Öğrenmek İçin : 

GET  /api/user?id=4
{
"id": 4,
"name":  "Tomisin Lalude"
}

Yaş Öğrenmek İçin : 

GET /api/age?user_id=4
{
"id": 4,
"age": 23
}

Ten Rengi Öğrenmek İçin : 

GET /api/skin_color?user_id=4
{
"id": 4,
"skin_color": "Brown Skin"
}

GraphQL API'leri ise:

POST /graphql
query {
user(id : 4) {
id
name
age
skin_color
}
}

Görüyor musunuz?

  • REST için, bu verileri almak için API'yi farklı URL'lerde üç kez çağırmanız gerekir, ancak GraphQL'de tek bir uç noktayı sorgularsınız.

  • GraphQL'de, REST'te bir GET isteğinde bulunmanın aksine bir sorguyu POST yapıyorsunuz.

  • GraphQL, yukarıdaki kod parçacığından gözlemleyeceğiniz gibi verileri almak için iç içe geçmiş JSON nesnelerini kullanmanıza izin verir. Bu, GraphQL sorgusunun sözdizimidir.

Size bu iki API türü için HTTP yanıt gövdesinin ham formunu göstermeme izin verin.

GraphQL

{
"query":  `
   query {
   user (id : 4) {
   id
   name
   age
   skin_color
   }
}`
}

REST

{
   "data": {
      "user": {
      "id": 4,
      "name": "Tomisin Lalude",
      "age":  23,
     "skin_color": "Brown Skin"
      }
   }
}

GraphQL yapısına yakından bakarsanız, sorgunun bir JSON nesnesi içinde bir dize (çok satırlı dizelerde geri işaretler kullanılır) olarak geçirildiğini fark edersiniz.

Yanıt, bir REST API için bir JSON nesnesi içindeki verilerde bir nesne olarak iletilir.

Dolayısıyla, tipik olarak, bir GraphQL sorgusu JSON değildir, bir dizedir.

  • İstemci (tarayıcı) GraphQL sorgusunu sunucuya bir dizge olarak gönderir.
  • Sunucu bu dizeyi doğrular
  • Sunucu daha sonra istemci (tarayıcı) tarafından istenen veri değerlerini almak için veritabanına çağrılar yapar.
  • Sunucu, bu getirilen verileri tarayıcıya bir JSON nesnesinde döndürür.

Bu, veri almak istediğiniz zaman için istemci-sunucu akışıdır.

Ancak, bu akış hakkında kafanızı fazla rahatsız etmenize gerek yok. Yanıtları işlerken HTTP istemcilerini kullandığımız REST API'lerinde olduğu gibi, sorgu yapmak için bir GraphQL istemcisi de kullanabilirsiniz.

Şöyle:

const client = new client("API_URL");

client.query(`
query {
    user {
    id
    name
    age
    skin_color
   }
}`)

Umarım bu makale size bu API'lerin nasıl farklılaştığı hakkında bir fikir verir.

Okuduğunuz için teşekkürler.