← Blog'a Dön
TEKNIK

REST vs GraphQL: API Mimarisi Karsilastirmasi

F. Cagri Bilgehan20 Şubat 20268 dk okuma
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

İlgili Yazılar

Acik Kaynak Yazilim Rehberi: Nedir, Nasil Katki Yapilir?

Acik kaynak yazilim nedir, lisans turleri nelerdir ve acik kaynak projelere nasil katki yapilir? GitHub, open source ve topluluk rehberi.

CI/CD Nedir? Surekli Entegrasyon ve Dagitim Rehberi

CI/CD nedir, neden onemlidir ve nasil kurulur? GitHub Actions, Jenkins ve otomatik test-deploy pipeline rehberi.