API'ler sorunlarınızı çözüyor mu yoksa size sorun mu yaratıyor? 200 OK nedir ve nasıl kullanılmalı? Bize de çok sık sorulan sorulardan birisi.

En sonda söyleyeceğimizi başta söyleyelim (smile).

Sizce aşağıdaki doğru mu? Bizce yanlış.

Hata içeren bir yanıtın 200 OK kodu ile dönülmesi API Tasarım standartlarına aykırıdır. Ve bu konu sadece API Tasarımını değil sistem mimarisindeki bir çok sorunu tetikleyebilir.

Örneğin, kullanmış olduğunuz monitoring ürünleri genelde 2xx kodlu yanıtları başarılı olarak kabul eder. Eğer bu başarılı olduğu anlamına gelmiyorsa Monitoring sistemlerinde sadece hata kodu değil mesaj içeriğine de bakılması anlamına gelir. Durum böyle olunca bir çok potansiyel sorun ve izlenebilirlik problemleri ortaya çıkar.   

Şunu unutmayın, özellikle dış paydaşlarınızla API'lar üzerinden veri paylaşıyorsanız API'ler sadece teknik arabirimler olmaktan çıkıp, bunlar sizin ürünlerinizdir ve geliştiriciler sizin müşterilerinizdir."

İyi bir API Program Yöneticisi/Ürün Yöneticisi/Geliştirici Savunucusunun mantrası:

"API'ler sorunlarınızı çözmenize yardımcı olmalıdır. API'ler sizin sorununuz olmamalıdır." - David Biesack

API'ler, yazılım sistemlerinin iletişim kurduğu, veri paylaştığı ve birlikte çalıştığı köprülerdir. İyi tasarlanmış bir API, sistemler arasındaki etkileşimi kolaylaştırır, kötü tasarlanmış bir API ise karmaşıklık ve sorunlar yaratır.

API'ler sadece teknik arabirimler değildir: API'ler sizin ürünlerinizdir ve geliştiriciler bizim müşterilerinizdir.


API Ekibinin Temel Prensipleri

"API'mizi geliştiricilerin bakış açısıyla tasarlıyoruz."

Bu, basit görünebilir ama pratikte çok zordur. Çoğu API ekibi bunu söyler ama gerçekten uygulamaz.

Şimdi bu temel prensipleri madde madde inceleyelim:

1. Geliştirici Deneyimi (DX) Her Şeyden Önce Gelir

API'lerinizi geliştiricilerin bakış açısından tasarlayın. Onlar sizin müşterilerinizdir ve iyi bir müşteri deneyimi sunmak zorundasınız.

Kendinize sorun:

  • API'niz ne kadar kolay anlaşılıyor?
  • Dokümantasyonu açık ve yol gösterici mi?
  • Kullanımı sezgisel mi?

Sık Karşılaşılan Tuzak: Karmaşık kimlik doğrulama/yetkilendirme (Authentication/Authorization) süreçleri. OpenID Connect / OAuth2 gibi standartlar bile, doğru kütüphanelerle kullanılmadığında geliştiriciler için zorlu olabilir.

Pratik Çözüm: Geliştiricilerin hızlıca başlayabilmesi için "hızlı başlangıç" kılavuzları, basit kimlik doğrulama seçenekleri ve deneme ortamları sunun. Auth süreci için adım adım görsel kılavuzlar oluşturun.

2. Basitlik ve Sadelik Anahtardır

Karmaşık API'ler zaman kaybettirir, hata olasılığını artırır ve geliştiricileri yıldırır. İyi bir API, minimum çabayla maksimum işi yapabilmelidir.

Sık Karşılaşılan Tuzak: Veritabanı şemalarını veya iç sistem yapılarını olduğu gibi dışarıya açmak.

Pratik Örnek: Boolean değerler için "Y"/"N" gibi karakterler yerine gerçek boolean kullanmak, enum yerine anlamsız tamsayı kodları döndürmek yerine anlamlı string değerler kullanmak.

Güçlü Çözüm: JSON Şeması'nı etkin kullanarak alanları doğru tanımlayın, zorunlu alanları ve beklenen formatları açıkça belirtin. API'nizin amacına uygun, temiz ve anlaşılır bir model sunun.

3. Tutarlılık Şarttır

API'nizin farklı noktalarında kullanılan:

  • İsimlendirme kuralları
  • Yanıt formatları
  • Parametre yapıları
  • Hata mesajları

...standart ve öngörülebilir olmalıdır. Tutarsızlık, geliştiricilerin kafasını karıştırır ve güveni sarsar.

Sık Karşılaşılan Tuzak: HTTP standartlarını göz ardı etmek:

  • Hatalar için 4xx veya 5xx yerine 200 OK döndürmek
  • POST ile kaynak oluşturulduğunda 201 Created yerine 200 OK kullanmak
  • GET isteğinin idempotent ve güvenli olmaması
  • Standart HTTP başlıklarını (Location, Retry-After) kullanmamak

Güçlü Çözüm: API Style Guide oluşturun ve ekibin tutarlı kalmasını sağlayın. Arnaud Lauret'in "API tutarlılığının 5 boyutu" yaklaşımını referans alın ve HTTP protokolünün mantığına uygun davranın.

4. Güvenilirlik ve Performans Vazgeçilmezdir

Bir API'nin iki kritik özelliği vardır:

  • Hızlı yanıt vermesi
  • Güvenilir çalışması

Yavaş veya sürekli hata veren bir API, geliştiricilerin hızla başka çözümlere yönelmesine neden olur.

Sık Karşılaşılan Tuzak: Hata yönetiminin (error handling) tasarımın en başından düşünülmemesi.

Güçlü Çözüm:

  • Hataları nasıl yakalayacağınızı planlayın
  • application/problem+json gibi standart hata formatları kullanın
  • Her hata için anlamlı ve yönlendirici mesajlar sunun
  • Performans darboğazlarını önceden belirleyip optimize edin
  • Yük testleri ve kapasite planlaması yapın

5. Geleceği Düşünerek Tasarlayın (Evrim)

API'ler zamanla değişir ve gelişir. Tasarımınız:

  • Genişleyebilir olmalı
  • Geriye dönük uyumluluğu korumalı
  • Gelecekteki değişimlere adapte olabilmeli

Sık Karşılaşılan Tuzak: API'yi evrimleşemeyecek şekilde tasarlamak veya sadece URL'deki sürüm numarasını değiştirerek (/v1/ -> /v2/) zarif bir evrim olacağını düşünmek.

Güçlü Çözüm:

  • API Tasarım ve Dokümantasyon Gözden Geçirme (ADDR) süreçleri uygulayın
  • Kullanım durumlarını önceden modelleyin
  • Versiyonlamayı sadece büyük değişikliklerde kullanın
  • Küçük değişiklikleri geriye dönük uyumlulukla yapın
  • Değişiklikleri zamanla kademeli olarak uygulayın

6. Açık İletişim ve Şeffaflık

API ekibi, geliştiricileri (kullanıcıları) proaktif ve net bir şekilde bilgilendirmelidir:

  • Yapılacak değişiklikler
  • Yeni sürümler
  • Kullanımdan kaldırmalar

Geri bildirim kanalları açık olmalı ve geliştiricilerle sürekli iletişim halinde kalınmalıdır.

Pratik Çözüm:

  • Değişiklik günlüklerini (changelog) detaylı tutun
  • Gelecek değişiklikleri önceden duyurun
  • Kullanımdan kaldırılacak özellikleri için geçiş süresi tanıyın
  • Kullanıcılar için forum veya topluluk kanalları oluşturun
  • Düzenli webinarlar ve eğitimler düzenleyin

Başarılı API'lerin Ortak Özellikleri

Başarılı bir API:

  • Amacını açıkça ifade eder
  • İyi bir kavramsal modele dayanır
  • Kullanıcı ihtiyaçlarını karşılar, sistemin iç yapısını yansıtmaz
  • Standartlara uyar, özellikle HTTP protokolünün mantığına
  • Geliştiricilerin tahmin edebileceği şekilde davranır
  • Hata durumlarını etkin şekilde yönetir
  • Evrimi önceden planlanmıştır

Yaygın API Tasarım Hataları ve Çözümleri

HataSonuçÇözüm
Hatalı durumda 200 OK dönmekİzlenebilirlik sorunlarıUygun HTTP durum kodları (4xx, 5xx) kullanın
Karmaşık kimlik doğrulamaEntegrasyon zorluklarıBasit ve standart auth mekanizmaları sunun
Değişken isimlendirmeTutarsız kod tabanıAPI Style Guide oluşturun, standartları belirleyin
Veritabanı yapısını yansıtmaGereksiz karmaşıklıkİş amaçlarına uygun, temiz modeller tasarlayın
Evrim planı eksikliğiSürüm karmaşasıBaştan genişlemeye uygun tasarlayın

Sonuç: Mantrayı Yaşatmak

API'ler sadece kod parçacıkları değil, stratejik iş varlıklarıdır. Başarılı bir API programı şunları yapar:

  • Geliştiricileri merkeze koyar
  • Onların işini kolaylaştırır
  • Basit, tutarlı, güvenilir ve geleceğe dönük tasarımlar üretir

"API'ler sorunlarınızı çözmeli, sorununuz olmamalı" mantrasını benimseyerek ve yukarıdaki prensipleri uygulayarak, hem geliştiricilerin sevdiği hem de iş hedeflerinize hizmet eden değerli API'ler yaratabilirsiniz.

En önemli adımları hatırlamak gerekirse:

  1. HTTP standartlarına uymak
  2. Anlamlı hata kodları dönmek
  3. Geliştirici deneyimini sürekli iyileştirmek