← Back to Blog
TEKNIK

REST vs GraphQL: API Mimarisi Karsilastirmasi

F. Cagri BilgehanFebruary 20, 20268 min read
RESTGraphQLAPIbackendweb gelistirme

REST vs GraphQL: API Mimarisi Karsilastirmasi

API tasarimi, her web uygulamasinin temellerinden biridir. Iki devi: REST ve GraphQL. Hangisi projeniz icin dogru?

REST Nedir?

REST (Representational State Transfer), kaynak tabanli (resource-based) bir API mimarisidir. Her kaynak bir URL ile temsil edilir.

GET    /api/users          -- Tum kullanicilar
GET    /api/users/1        -- Tek kullanici
POST   /api/users          -- Yeni kullanici
PUT    /api/users/1        -- Kullanici guncelle
DELETE /api/users/1        -- Kullanici sil

GraphQL Nedir?

GraphQL, Facebook tarafindan gelistirilen bir sorgu dilidir. Tek endpoint uzerinden tam olarak ihtiyaciniz olan veriyi istemenizi saglar.

query {
  user(id: 1) {
    name
    email
    posts {
      title
    }
  }
}

Detayli Karsilastirma

| Kriter | REST | GraphQL | |--------|------|---------| | Endpoint | Birden fazla | Tek endpoint | | Veri getirme | Sabit yapilar | Istemci belirler | | Over-fetching | Var | Yok | | Under-fetching | Var | Yok | | Caching | HTTP cache dahili | Ozel caching gerekli | | Dosya yukleme | Kolay | Karmasik | | Ogrenme egrisi | Dusuk | Orta | | Hata yonetimi | HTTP status kodlari | Ozel hata formatı | | Gerec zamanlı | Webhook/polling | Subscription | | Dokumantasyon | Swagger/OpenAPI | Introspection (otomatik) |

Over-fetching ve Under-fetching

Over-fetching (Fazla veri)

REST'te bir kullanicinin sadece adini istiyorsunuz ama tum verisi geliyor:

// GET /api/users/1 -- Sadece isim istiyordunuz
{
  "id": 1,
  "name": "Ali",
  "email": "ali@test.com",
  "address": "...",
  "phone": "...",
  "preferences": "..."
}

GraphQL'de sadece ihtiyaciniz olani istersiniz:

query {
  user(id: 1) {
    name
  }
}

Under-fetching (Eksik veri)

REST'te bir sayfayi olusturmak icin birden fazla istek gerekebilir:

GET /api/users/1
GET /api/users/1/posts
GET /api/users/1/followers

GraphQL'de tek istekle tum veriyi alin:

query {
  user(id: 1) {
    name
    posts { title }
    followers { name }
  }
}

Ne Zaman REST Secmeli?

  • Basit CRUD islemleri
  • HTTP caching onemli
  • Dosya yukleme/indirme yogun
  • Ekip REST'e asina
  • Kucuk-orta olcekli projeler
  • Public API (ucuncu taraf entegrasyonu)

Ne Zaman GraphQL Secmeli?

  • Karmasik veri iliskileri
  • Mobil + web farkli veri ihtiyaci
  • Performans kritik (minimal veri transferi)
  • Hizli degisen gereksinimler
  • Buyuk, karmasik uygulamalar
  • Frontend-driven gelistirme

Populer Araclar

REST

  • Express.js, Fastify
  • Swagger/OpenAPI
  • Postman

GraphQL

  • Apollo Server/Client
  • Relay
  • GraphQL Playground
  • Hasura (otomatik GraphQL)

Sonuc

REST ve GraphQL birbirinin yerine gecen degil, tamamlayan teknolojiler. Basit projelerde REST yeterli. Karmasik veri gereksinimleri olan modern uygulamalarda GraphQL buyuk avantaj saglar. Bazi projeler ikisini birlikte kullanir.

REST veya GraphQL ile API gelistirmek isterseniz benimle iletisime gecin: info@cagribilgehan.com. Projelerime goz atin: cagribilgehan.com

Related Posts

Acik Kaynak Yazilim Rehberi: Nedir, Nasil Katki Yapilir?

Acik kaynak yazilim nedir ve nasil katkida bulunulur?

CI/CD Nedir? Surekli Entegrasyon ve Dagitim Rehberi

CI/CD nedir ve nasil kurulur?