İçeriğe geç
Gunerdev.
← BlogTeknoloji

API-First Yaklaşım: Geleceğe Hazır Yazılım Mimarisi

API'leri sonradan eklenecek bir özellik gibi düşünmek artık geride kaldı. Modern yazılım, API'lerin etrafında kuruluyor.

Furkan Güner6 dk
API mimarisi

Geleneksel yazılım geliştirme yaklaşımında, önce arayüz tasarlanır, sonra arayüze uygun bir backend yazılır. API'ler, başka bir kanaldan erişim gerekiyorsa sonradan eklenir. Bu yaklaşım hızlı başlangıç sağlar; ancak ilk yıldan sonra ciddi sorunlar üretir.

API-First yaklaşım bunu tersine çevirir: önce API tasarlanır, sonra bu API'yi tüketen frontend (web, mobil, dijital tabela, vb) inşa edilir.

Neden API-First?

İşletmenizin müşterileri sadece web sitesinden mi geliyor? Mobil uygulamadan mı? Sosyal medya entegrasyonu var mı? Belki bir gün bir chat-bot, belki bir IoT cihaz, belki bir ortağa entegrasyon gerekecek.

Tüm bu kanalların ortak ihtiyacı şudur: aynı veri, aynı mantık. Eğer her kanal kendi backend'ini yazarsa, aynı işi defalarca yapmış olursunuz; tutarsızlıklar başlar.

API-First mimaride, iş mantığı tek bir yerde toplanır: API katmanı. Web, mobil, ortak entegrasyonları, tümü bu API'yi tüketir.

Tasarım önce, kod sonra

API-First demek, ilk olarak API kontratını yazmak demek. OpenAPI (eski adıyla Swagger) spesifikasyonu bu iş için yaygın bir araç.

Endpoint'lerinizi, veri tiplerinizi, hata durumlarınızı önce dokümante edersiniz. Sonra hem backend hem frontend ekibi bu spesifikasyona göre paralel çalışır. Frontend için mock server kurulur (Prism, Mockoon gibi), backend tamamlanmadan UI geliştirilir.

Bu yaklaşım hem geliştirme süresini kısaltır hem de entegrasyon sürprizlerini önler.

REST mi GraphQL mi tRPC mi?

REST, hâlâ en yaygın API mimari tarzı. Olgun, anlaşılır, geniş ekosistem. Çoğu işletme için ilk tercih.

GraphQL, frontend'in "ne lazımsa onu istemesine" izin verir. Aşırı/eksik veri sorunlarını çözer. Ancak öğrenme eğrisi dik, caching karmaşık.

tRPC, TypeScript merkezli ekosistemler için güçlü bir alternatif. Kontrat backend ve frontend arasında otomatik paylaşılır; tip güvenliği uçtan uca sağlanır.

Hangisini seçeceğiniz takıma, projeye, ekosisteme bağlı.

Versioning kritik

API'leriniz dış dünyaya açıldığında, geri dönüşü olmayan kararlar vermiş olursunuz. Bir endpoint'i değiştirmek, mobil uygulamasının eski versiyonunu kıracaksa düşünmeniz gerek.

Versioning iki yaygın yöntemle yapılır: URL'de (`/api/v1/...`) veya header'da (`Accept: application/vnd.company.v1+json`). Her iki yaklaşımın avantajları var; ekibin tercihi belirleyici.

Authentication ve authorization

API'leriniz dış dünyaya açıkken authentication şart. JWT, OAuth 2.0, API key gibi seçenekler var. Hangisini kullanacağınız tüketici tipine bağlı: kendi mobil uygulamanız için JWT, üçüncü taraf ortaklar için OAuth 2.0 mantıklı.

Authorization (kim neyi yapabilir) ayrı bir tartışma. Role-based veya attribute-based modeller kurun. Hassas endpoint'leri her zaman çift katmanlı koruyun: hem kimlik doğrulama hem yetki kontrolü.

Rate limiting ve quota

API'lerinizin kötüye kullanımdan korunması için rate limiting şart. IP veya API key bazında dakikada/saatte/günde belirli istek sayısı tanımlanmalı. Aşan istekler 429 Too Many Requests ile reddedilir.

Premium müşterilere daha yüksek quota tanıyabilirsiniz. Bu hem güvenlik hem ticari bir araç.

Dokümantasyon zorunlu

Bir API'yi başkalarının kullanması için dokümantasyon olmalı. OpenAPI spec'inden otomatik üretilen Swagger UI veya Redoc gibi araçlar bu işi kolaylaştırır.

İyi dokümantasyon: her endpoint açıklanmış, örnek istekler ve cevaplar verilmiş, hata durumları belirtilmiş, authentication akışı net anlatılmış.

Sonuç

API-First yaklaşım kısa vadede biraz daha fazla planlama gerektirir; ama uzun vadede hem geliştirme hızı, hem entegrasyon kalitesi, hem de ölçeklenme açısından kazandırır. Yeni bir proje başlatıyorsanız, "API'leri sonra ekleriz" demek yerine ilk gün API tasarımına yatırım yapın.

WhatsApp+90 536 215 16 44