API tasarımı projenin sırtını kuran karar. REST 25 yıllık standard, GraphQL 2015 sonrası alternatif, tRPC ve gRPC yeni nesil seçenekler. Yanlış seçim 6 ay sonra büyük refactor demek.
REST nedir?
Resource-based: /users, /users/123, /users/123/posts. HTTP method'lar (GET, POST, PUT, DELETE) işlemleri belirler. Endpoint başına farklı response, over/under-fetching mümkün.
GraphQL nedir?
Query language. Tek endpoint (/graphql). Client tam olarak istediği alanı sorgular. "Bana user'ın adını, son 5 postu, her postun başlığını ve yorum sayısını ver" → tek istek. Over/under-fetching yok.
Pratik karşılaştırma
- Endpoint
- REST: çoklu. GraphQL: tek.
- Over-fetching
- REST: sık. GraphQL: yok.
- Caching
- REST: HTTP cache standart. GraphQL: karmaşık.
- Versioning
- REST: v1/v2 URL. GraphQL: deprecated field.
- Real-time
- REST: yok (WebSocket gerekir). GraphQL: subscriptions native.
- Learning curve
- REST: kolay. GraphQL: orta (schema, resolver).
- File upload
- REST: kolay. GraphQL: karmaşık.
Ne zaman REST?
- Basit CRUD app
- Public API (Stripe, GitHub gibi)
- Cache-heavy use case
- File upload/download ağırlıklı
- Microservice arası iletişim (gRPC daha iyi olabilir)
- Ekipte GraphQL deneyimi yok
Ne zaman GraphQL?
- Mobile app (network optimizasyon kritik)
- Complex relational data (kullanıcı + post + yorum + tag iç içe)
- Çoklu client (web + iOS + Android farklı veri ister)
- Real-time subscription gerekiyor
- Frontend team rapid iteration yapacak
GraphQL ekosistem (2026)
- Apollo Server / Apollo Client — en olgun
- GraphQL Yoga — modern, hızlı
- URQL — lightweight client
- TanStack Query + GraphQL — hibrit yaklaşım
- Hasura — DB'den otomatik GraphQL
tRPC — modern alternatif
TypeScript-first, type-safe RPC. Schema gerek yok, fonksiyon imzaları doğrudan client'a yansır. Sadece TS full-stack için. Next.js + tRPC kombinasyonu 2024-2025'te çok popüler. "GraphQL'in basitleştirilmiş hali".
gRPC — microservice için
Protobuf schema + HTTP/2. Binary protokol, son derece hızlı. Browser desteği sınırlı (gRPC-Web gerek). Backend-to-backend için ideal.
Karar matrisi
- Public API + kolay
- REST
- Mobil app + complex data
- GraphQL
- TypeScript full-stack
- tRPC
- Microservice
- gRPC
- Real-time + collab
- GraphQL Subscriptions / WebSocket
Şunu yapmayın: GraphQL'i "trend" diye seçmek
Basit CRUD app için GraphQL fazla complexity. Schema, resolver, dataloader, caching yönetimi — REST'te bedava gelen şeyler GraphQL'de extra iş. Aracı problemin büyüklüğüne göre seç.
NotAPI mimari danışmanlığı: +90 537 729 40 97 (WhatsApp). REST/GraphQL/tRPC seçimi + ölçeklenebilir kurulum.