API versiyonlama yöntemleri nelerdir? Geriye dönük uyumluluğu nasıl korursunuz?

Cevap

Versiyonlama, mevcut istemcileri bozmadan API'yi geliştirebilmek içindir.

Yöntemler

YöntemÖrnekArtıEksi
URL path/v1/ordersAçık, kolay test, cache dostuURL kaynağı değil versiyonu da taşır
Query param/orders?version=2KolayUnutulabilir, cache karmaşası
HeaderApi-Version: 2URL temiz kalırTarayıcıdan test zor, görünmez
Media typeAccept: application/vnd.firma.v2+jsonREST'e en uygunKarmaşık

Pratikte en yaygın yöntem URL path'tir. Stripe gibi bazı API'ler tarih bazlı header versiyonları kullanır (Stripe-Version: 2024-06-20).

Breaking vs non-breaking değişiklik

Non-breaking (aynı versiyonda yapılabilir):

  • Yeni endpoint eklemek
  • Yanıta yeni, opsiyonel alan eklemek
  • Yeni opsiyonel istek parametresi

Breaking (yeni versiyon gerektirir):

  • Alan silmek veya adını değiştirmek
  • Alanın tipini değiştirmek (id sayıdan string'e)
  • Opsiyonel alanı zorunlu yapmak
  • Hata kodlarını veya anlamını değiştirmek

Geriye dönük uyumluluk pratikleri

  1. İstemcilerin bilinmeyen alanları yok saymasını bekleyin (tolerant reader).
  2. Yeni versiyonu yayınlayınca eskisini hemen kapatmayın; Deprecation ve Sunset başlıklarıyla duyurun.
  3. Eski versiyonun kullanımını metriklerle izleyin, istemcilerle iletişim kurun.
  4. Versiyonu yalnızca major değişiklikte artırın; her küçük değişiklikte v3, v4 açmak bakım yükünü katlar.
  5. Mümkünse versiyonlar arası farkı ayrı controller kopyaları yerine bir dönüşüm katmanıyla yönetin.
  1. HTTP 401 ile 403 durum kodları arasındaki fark nedir?KolayAPI TasarımıBackend
  2. JWT nedir? Session tabanlı kimlik doğrulamadan farkı nedir?OrtaAPI TasarımıBackend
  3. Idempotency nedir? Hangi HTTP metotları idempotent'tir?OrtaAPI TasarımıBackend
  4. OAuth 2.0 nedir? Authorization Code (PKCE) ve Client Credentials akışları nasıl çalışır?ZorAPI TasarımıBackend
  5. Rate limiting nedir? Token bucket ve sliding window algoritmalarını açıklayın.ZorAPI TasarımıBackend
  6. gRPC nedir? REST'ten farkı nedir ve ne zaman tercih edilir?OrtaAPI TasarımıBackend

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle