- Katılım
- 21 May 2023
- Mesajlar
- 712
- Tepki
- 17
- Puan
- 18
Bir uygulamanın hava durumunu göstermesi için meteoroloji verisini kendisinin toplaması gerekmiyor. Başka bir hizmetin sunduğu kapıdan veriyi alıyor. Bu kapının adı API.
Bu yazı API'nin ne olduğunu, hangi soyutlamayı sağladığını, HTTP üzerinden çalışan API'lerin nasıl tarif edildiğini ve bir arayüz tanımının neyi ortadan kaldırdığını iki kaynağa dayanarak açıklıyor.
Tanım: karmaşıklığı gizleyen yapı
MDN'in API girişi kavramı şöyle tanımlıyor: Uygulama Programlama Arayüzleri (API), geliştiricilerin karmaşık işlevleri daha kolay oluşturmasına imkân vermek için programlama dillerinde sunulan yapılar.
İşlevleri de tek cümlede veriliyor: daha karmaşık kodu sizden soyutluyorlar ve onun yerine kullanması daha kolay bir söz dizimi sunuyorlar.
MDN benzetmeyi elektrikle kuruyor. Evinizde bir cihazı kullanmak istediğinizde onu prize takıyorsunuz ve çalışıyor; doğrudan güç kaynağına bağlamayı denemiyorsunuz. Metne göre bunu yapmak çok verimsiz olurdu ve elektrikçi değilseniz zor ve tehlikeli olurdu.
- Ne: Programlama dillerinde sunulan yapılar.
- Ne yapıyor: Karmaşık kodu soyutluyor.
- Kazanç: Daha kolay bir söz dizimi.
Kapının iki yanı
API bir tarafın sunduğu, diğer tarafın kullandığı bir sözleşme. Sunan taraf içeride ne yaptığını gizli tutuyor; kullanan taraf yalnız kapının kurallarını bilmek zorunda.
Bu ayrım pratikte iki şey sağlıyor. Birincisi, sunan taraf içerideki uygulamayı değiştirse bile kapı aynı kaldığı sürece kullanan taraf etkilenmiyor.
İkincisi, kullanan tarafın uzmanlaşması gerekmiyor. Elektrik benzetmesindeki gibi, prizin ardındaki sistemi bilmeden cihazı çalıştırabiliyorsunuz.
Püf nokta' Alıntı:API'yi değerli kılan şey ne yaptığı değil, ne kadarını gizlediği.
Web tarafında ne değişiyor?
Aynı fikir ağ üzerinden çalıştığında kapı da uzaklaşıyor. İki program artık aynı makinede değil; aralarında HTTP var.
Bu durumda yeni bir sorun doğuyor: kullanan taraf, sunan tarafın hangi adresleri, hangi yöntemleri ve hangi veri yapılarını beklediğini nereden bilecek?
Klasik yanıt belge okumaktı. Ama belge insan içindi; program okuyamıyordu.
Arayüz tanımı ne getiriyor?
OpenAPI Belirtimi bu boşluğu doldurmak için tanımlanmış. Belirtim kendini şöyle anlatıyor: HTTP API'leri için standart, programlama dilinden bağımsız bir arayüz tanımı belirliyor.
Kazanç da yazılı: bu tanım hem insanların hem bilgisayarların, bir hizmetin yeteneklerini kaynak koda erişmeden, ek belgeye ihtiyaç duymadan ve ağ trafiğini incelemeden keşfedip anlamasına imkân veriyor.
Belirtime göre uygun biçimde tanımlandığında bir tüketici, uzak hizmeti asgari düzeyde uygulama mantığıyla anlayıp onunla etkileşebiliyor. Bu etkileşim, HTTP mesajlarını bir veri modeline ayrıştırıp ondan serileştirerek gerçekleşiyor.
Belge kıyası da yapıyor: alt düzey programlamada arayüz tanımları ne yaptıysa, OpenAPI de bir hizmeti çağırmadaki tahmin işini ortadan kaldırıyor.
Tanım dosyası ne işe yarıyor?
Belirtim, üretilen tanımın kullanım alanlarını da sayıyor. Bir OpenAPI Tanımı; API'yi görüntülemek için belge üretme araçlarınca, çeşitli programlama dillerinde sunucu ve istemci üretmek için kod üretme araçlarınca ve test araçlarınca kullanılabiliyor.
Bunun günlük karşılığı şu: API'yi tarif eden tek bir dosya, hem belgeyi hem istemci kodunu hem testleri besleyebiliyor.
Aynı dosya sürüm takibini de kolaylaştırıyor. Kapının kurallarındaki bir değişiklik metinde görünür oluyor ve kullanan tarafa aktarılabiliyor.
Nerelerde karşınıza çıkıyor?
Kavram tek bir katmana ait değil. Tarayıcının konum bilgisi vermesi de, bir ödeme sağlayıcısının işlem sonucunu döndürmesi de aynı mantıkla çalışıyor: bir taraf yeteneği açıyor, diğeri kuralına uyarak çağırıyor.
Sitenizde harita göstermek, kargo takip numarasını sorgulamak, faturayı muhasebe yazılımına aktarmak; hepsi dışarıdaki bir yeteneği kendi ürününüze bağlamak anlamına geliyor.
Bunun kurumsal karşılığı bağımlılık yönetimi. Bir yeteneği dışarıdan almak geliştirme süresini kısaltıyor ama hizmetin sürekliliğini ve sürüm politikasını da işinize dahil ediyor.
Neye dikkat edilir?
İlk soru kapının yazılı olup olmadığı. Arayüz tanımı yoksa entegrasyon deneme yanılmayla ilerliyor ve karşı taraftaki sessiz bir değişiklik üretimde patlıyor.
İkinci soru hata davranışı. Başarılı yanıt kadar başarısız yanıtın da tanımlı olması gerekiyor; hangi durumda tekrar denemenin güvenli olduğu buradan çıkıyor.
Üçüncü soru kimlik. Çağrıyı kimin yaptığı sunucu tarafında doğrulanıyorsa, o kimliğin nerede saklandığı ayrı bir karar hâline geliyor.
Yan yana okunacaklar
HTTP üzerinden çalışan API'lerde metodların ne anlama geldiğini REST API yazımızda anlatmıştık. Veriyi taşıyan biçimi ise ayrı bir yazıda ele aldık.
Kimlik doğrulama tarafında anahtarın nerede saklanacağını API anahtarı yazımızda, tarayıcıdan yapılan çağrılarda çıkan kısıtı CORS hatası yazımızda toplamıştık.
Sık Sorulan Sorular
API nedir?
Karmaşık işlevleri daha kolay oluşturmak için sunulan, karmaşık kodu soyutlayıp daha kolay bir söz dizimi veren yapı.
Sadece web için mi?
Hayır. Kavram programlama dillerinde sunulan yapıları kapsıyor; HTTP API'leri bunun ağ üzerindeki biçimi.
Arayüz tanımı ne işe yarıyor?
Hizmetin yeteneklerinin kaynak koda erişmeden, insan ve bilgisayar tarafından anlaşılmasını sağlıyor.
Tanım dosyasıyla ne yapılıyor?
Belge üretimi, sunucu ve istemci kodu üretimi ile test araçları bu dosyayı kullanabiliyor.
Neden ağ trafiğini incelemeye gerek kalmıyor?
Belirtim, yeteneklerin trafik incelemesi olmadan keşfedilmesini hedefliyor.
Özetle
API, bir yazılımın yeteneklerini dışarıya açan ve iç karmaşıklığı gizleyen arayüz. Değeri soyutlamada: kullanan taraf kapının kurallarını bilmekle yetiniyor. Ağ üzerinde çalıştığında kuralların yazılı olması gerekiyor; OpenAPI bu tanımı standartlaştırıyor ve hizmeti çağırmadaki tahmin işini ortadan kaldırıyor.
Kullandığınız servisin arayüz tanımı yazılı mı, yoksa deneyerek mi öğrendiniz?
Güncelleme: 3 Eylül 2026. MDN API girişi ve OpenAPI Belirtimi kontrol edildi.
Dijital Dünyanıza Yön Veren Pusula