Mobile App WikiMobile App Wiki
WikiApp DiscoverDiscuss

Wiki

    mobileapp.wiki

    Wiki

    • ASO17
    • Monetizasyon14
    • Mağaza Politikaları20
    • Metrikler15
    • Geliştirme25
    • Pazarlama15
    • Hukuk9
    • UI/UX14
    • Test & QA10
    • Altyapı10

    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.

    API Design (REST vs GraphQL)

    İç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 içeriği nasıl buldunuz?

    Paylaş

    ← Önceki

    Firebase

    Sonraki →

    Supabase

    İlgili İçerikler

    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ı.

    Android Kapalı Test

    Android Kapalı Test hizmeti için androidtesti.com platformunu ziyaret edin.

    androidtesti.com