Mobile App Wiki

Mobile App Wiki

mobileapp.wiki

Ana Sayfa

Kategoriler

mobileapp.wiki

Mobile App Wiki

Mobil uygulama geliştirme bilgi tabanı

GizlilikAna SayfaSitemapRSS
© 2026 mobileapp.wiki
Ana Sayfa/Altyapı/API Design (REST vs GraphQL)
Altyapı3 dk okuma

API Design (REST vs GraphQL)

Mobil uygulamalar için API tasarım rehberi. REST vs GraphQL karşılaştırması, pagination, versioning, cache stratejileri ve offline-first yaklaşımlar.

apirestgraphqlbackendendpointmobiltasarımcachepaginationoffline

İçindekiler

Mobil İçin API Neden Farklı?REST APIAvantajlarıDezavantajlarıREST Best Practices (Mobil)GraphQLAvantajlarıDezavantajlarıKarşılaştırmaNe Zaman Hangisi?REST Tercih EtGraphQL Tercih EtMobil Özel İpuçlarıPopüler HTTP Client'larAPI Güvenliğiİlgili Konular

Mobil İçin API Neden Farklı?

  • Sınırlı bant genişliği (mobil veri)
  • Yüksek latency (kablosuz ağ)
  • Batarya tüketimi (her ağ çağrısı enerji harcar)
  • Farklı ekran boyutları = farklı veri ihtiyacı
  • Bağlantı kopmaları (tünel, asansör, metro)
  • 2026 itibarıyla edge computing ve CDN tabanlı API'lar yaygınlaşıyor

REST API

Avantajları

  • Basit ve anlaşılır
  • HTTP standartlarına dayalı
  • Cache mekanizması kolay (HTTP cache)
  • Geniş araç ve kütüphane desteği
  • Öğrenmesi kolay

Dezavantajları

  • Over-fetching: İhtiyaçtan fazla veri geliyor
  • Under-fetching: Birden fazla istek gerekiyor
  • Versiyon yönetimi (/v1, /v2)
  • Her endpoint ayrı tasarlanmalı

REST Best Practices (Mobil)

  • Pagination kullan (cursor-based önerilir - offset ile consistency sorunları olabilir)
  • Field filtering: ?fields=id,name,image
  • Sparse fieldsets: Sadece gerekli alanları döndür
  • Gzip/Brotli compression
  • ETag ile conditional request (304 Not Modified)
  • Consistent error format: { "error": { "code": "INVALID_EMAIL", "message": "..." } }
  • Rate limiting header'ları: X-RateLimit-Limit, X-RateLimit-Remaining

GraphQL

Avantajları

  • Tam olarak ihtiyacın kadar veri: Client ne isterse o gelir
  • Tek endpoint (/graphql)
  • Güçlü tip sistemi (schema)
  • Birden fazla kaynağı tek istekte al
  • Gerçek zamanlı (subscriptions)
  • Introspection ile self-documenting API

Dezavantajları

  • Öğrenme eğrisi (query language, schema tasarımı)
  • Cache daha karmaşık (Apollo Client normalized cache ile çözülür)
  • File upload standart değil (multipart spec gerekli)
  • N+1 query problemi (backend'de DataLoader ile çözülür)
  • Over-engineering riski (basit uygulamalar için)

Karşılaştırma

ÖzellikRESTGraphQL
ÖğrenmeKolayOrta
Over-fetchingYaygınYok
CacheKolay (HTTP)Karmaşık (normalized)
File uploadStandart (multipart)Karmaşık
Real-timeYok (WebSocket ayrı)Subscription
AraçlarÇok genişBüyüyor
VersioningURL bazlıSchema evolution
MonitoringBasit (endpoint bazlı)Karmaşık (query bazlı)

Ne Zaman Hangisi?

REST Tercih Et

  • Basit CRUD uygulamaları
  • Küçük ekip, hızlı geliştirme
  • Güçlü cache gereksinimi
  • Backend deneyimi az
  • Public API sunacaksan

GraphQL Tercih Et

  • Karmaşık veri ilişkileri
  • Birden fazla platform (web + mobile + tablet)
  • Farklı ekranlar farklı veri istiyor
  • Hızlı iterasyon gerektiren ürün
  • Mikro-servis mimarisi (BFF pattern)

Mobil Özel İpuçları

  • Minimum request sayısı (batarya + performans)
  • Response boyutunu minimize et (gereksiz alan gönderme)
  • Offline cache stratejisi (AsyncStorage, MMKV, SQLite, WatermelonDB)
  • Retry mekanizması (exponential backoff: 1s → 2s → 4s → 8s)
  • Request timeout ayarla (10-30 saniye)
  • Optimistic update ile algılanan hızı artır
  • Background sync ile offline değişiklikleri senkronize et
  • Certificate pinning ile güvenlik (MITM koruması)

Popüler HTTP Client'lar

ClientPlatformÖzellik
AxiosCross-platformİnterceptor, retry, cancel token
KyCross-platformModern, küçük boyut
Apollo ClientGraphQLNormalized cache, React hooks
TanStack QueryREST/GraphQLCache, retry, background refetch
URQLGraphQLHafif, extensible, exchange system

API Güvenliği

  • HTTPS: Her zaman (HTTP asla)
  • Authentication: JWT token veya API key
  • Token refresh: Access token + refresh token pattern
  • Rate limiting: Brute force koruması
  • Input validation: Server-side validation (client validation yetmez)
  • CORS: Web client'lar için (mobil native'de gerekli değil)

API tasarımında "perfect" yoktur. Uygulamanızın karmaşıklığına ve ekibinizin deneyimine göre seçin. Başlangıçta REST, karmaşıklaştıkça GraphQL'e geçiş yaygın bir patterndir.

İlgili Konular

  • WebSocket & Real-time
  • Offline First Tasarım
  • App Icon Tasarımı ve Optimizasyonu

Bu makaleyi nasıl buldunuz?

Paylaş

← Önceki

Firebase

Sonraki →

Supabase

İlgili Makaleler

Firebase

Google Firebase mobil uygulama platformu rehberi. Authentication, Firestore, Cloud Functions, Crashlytics, Analytics, Remote Config ve FCM detayları.

Supabase

Açık kaynaklı Firebase alternatifi Supabase rehberi. PostgreSQL, Row Level Security, Edge Functions, realtime subscriptions ve mobil entegrasyon.

Analytics Platformları

Mobil uygulama analitik platformları karşılaştırma rehberi. Firebase Analytics, Mixpanel, Amplitude ve PostHog ile event ve retention ölçümü.

Remote Config & Feature Flags

Remote Config ve Feature Flags yönetim rehberi. Firebase Remote Config, LaunchDarkly ve Statsig ile gradual rollout ve kill switch stratejileri.

CDN & Asset Delivery

CDN ve asset delivery optimizasyon rehberi. Cloudflare, AWS CloudFront ve Bunny CDN karşılaştırması, image optimization ve cache stratejileri detayları.