Yazılım mimarisi
API nedir?
API (Application Programming Interface, uygulama programlama arayüzü), bir yazılımın başka bir yazılıma hangi işlevleri hangi kurallarla sunduğunu tanımlayan sözleşmedir.
Son güncelleme:
Somut olarak ne yapar
Bir e-ticaret sitesinde kredi kartıyla ödeme yaptığınızda site, bankanın API'sine şu tutarı şu kartla çek isteği gönderir ve bir cevap alır. Site bankanın iç sistemini bilmez, yalnızca sözleşmeyi bilir: hangi adrese, hangi alanlarla istek atılacağı ve hangi cevabın ne anlama geldiği.
Bu sözleşme olduğu için taraflar birbirinden bağımsız değişebilir. Banka altyapısını baştan yazsa bile, API aynı kaldığı sürece e-ticaret sitesinde tek satır kod değişmez.
REST, GraphQL ve gRPC
REST bugün en yaygın biçimdir: her kaynak bir adrese karşılık gelir ve HTTP metotlarıyla (GET, POST, PUT, DELETE) işlem yapılır. GraphQL'de ise istemci hangi alanları istediğini kendi belirler; mobil uygulamalarda gereksiz veri indirmemek için tercih edilir. gRPC, servisler arası yüksek hacimli iletişimde daha hızlıdır ama tarayıcıdan doğrudan çağrılamaz.
Seçim genellikle istemciye göre yapılır. Tek bir web arayüzü varsa REST fazlasıyla yeterlidir; aynı veriyi çok farklı ekranlar farklı şekillerde tüketiyorsa GraphQL bakım yükünü azaltır.
İyi bir API'yi ayıran şey
- Sürümleme: yayınlanmış bir API'yi kırmadan değiştirmek mümkün değildir, o yüzden sürüm baştan planlanır.
- Hata cevapları: 200 dönüp gövdede başarısız yazan API, çağıran tarafta sessiz hatalara yol açar.
- Hız sınırı: kimin ne kadar istek atabileceği tanımlı olmalı, yoksa tek bir hatalı istemci servisi düşürür.
- Dokümantasyon: OpenAPI gibi makine tarafından okunabilir bir tanım, entegrasyon süresini günlerden saatlere indirir.