REST API Tasarımı: En İyi Pratikler ve Sık Yapılan Hatalar

REST API Tasarımı: En İyi Pratikler ve Sık Yapılan Hatalar

İyi Bir API Neden Bu Kadar Önemli?

Bir uygulamanın kalitesi çoğu zaman arka planda çalışan API'ının kalitesiyle doğru orantılıdır. Kötü tasarlanmış bir API; entegrasyon hatalarına, güvenlik açıklarına ve gelecekte değiştirilmesi neredeyse imkânsız olan teknik borçlara yol açar. İyi tasarlanmış bir REST API ise yıllarca sorunsuz hizmet verir.

REST'in Temel İlkeleri

  • Stateless (Durumsuz): Her istek kendi içinde tüm bilgiyi taşımalıdır. Sunucu, istemci hakkında oturum bilgisi tutmaz.
  • Uniform Interface (Tekdüze Arayüz): Kaynaklara erişim için standart HTTP metodları kullanılır.
  • Client-Server Ayrımı: İstemci ve sunucu bağımsız gelişebilir.
  • Cacheable (Önbelleklenebilir): Yanıtlar uygun durumlarda önbelleklenebilir olmalıdır.

URL Tasarımı — Doğru ve Yanlış

# ❌ Kötü URL tasarımı örnekleri
GET  /getUsers
POST /createNewUser
GET  /deleteUser?id=5
POST /user/doLogin

# ✅ İyi URL tasarımı (isim tabanlı, eylem tabanlı değil)
GET    /api/v1/users          # Tüm kullanıcıları listele
POST   /api/v1/users          # Yeni kullanıcı oluştur
GET    /api/v1/users/5        # ID'si 5 olan kullanıcıyı getir
PUT    /api/v1/users/5        # ID'si 5 olan kullanıcıyı güncelle
DELETE /api/v1/users/5        # ID'si 5 olan kullanıcıyı sil
GET    /api/v1/users/5/posts  # Kullanıcının gönderilerini listele

HTTP Durum Kodlarını Doğru Kullanın

KodAnlamNe Zaman Kullanılır?
200 OKBaşarılıGET, PUT başarıyla tamamlandığında
201 CreatedOluşturulduPOST ile yeni kaynak oluşturulduğunda
204 No Contentİçerik yokDELETE başarılı olduğunda
400 Bad RequestHatalı istekİstemci hatalı veri gönderdiğinde
401 UnauthorizedKimlik doğrulama gerekliToken eksik veya geçersizse
403 ForbiddenErişim yasakYetki yetersizse (giriş yapılmış ama izin yok)
404 Not FoundBulunamadıKaynak mevcut değilse
500 Server ErrorSunucu hatasıBeklenmeyen sunucu taraflı hata

Tutarlı Hata Yanıtları Döndürün

// ❌ Kötü: Tutarsız ve bilgisiz hata yanıtı
{ "error": true }

// ✅ İyi: Standart ve açıklayıcı hata yanıtı
{
  "success": false,
  "status": 422,
  "message": "Doğrulama başarısız",
  "errors": [
    { "field": "email", "message": "Geçerli bir e-posta adresi giriniz" },
    { "field": "password", "message": "Şifre en az 8 karakter olmalıdır" }
  ],
  "timestamp": "2026-09-11T14:00:00Z"
}

Versiyonlama (Versioning)

API'nızda kırılgan (breaking) değişiklikler yaptığınızda eski istemcileri bozmamak için versiyonlama şarttır:

# URL tabanlı versiyonlama (en yaygın)
/api/v1/users
/api/v2/users

# Header tabanlı versiyonlama
Accept: application/vnd.codemarefi.v2+json
🔑 Altın Kural

API'nızı tasarlarken kendinizi bir kütüphane kullanıcısı yerine koyun. Dokümantasyon olmadan, sezgisel olarak kullanılabilen bir API iyi bir API'dır. Her zaman "Bu endpoint'i ilk kez gören biri ne anlar?" sorusunu sorun.

0 Yorum

YORUM YAPMAK İÇİN SİSTEME SIZMANIZ GEREKİYOR

Lütfen yukarıdaki butonu kullanarak giriş yapın veya kimlik oluşturun.

Yorumlar yükleniyor...