API (Application Programming Interface) Nedir ?
Günümüzde Web uygulamaları gittikçe daha kapsamlı uygulamalar haline gelmektedir. Bu uygulamalarda da kullanılmakta olan veritabanları da aynı kapsamda gelişmektedir ve bu bir çok açıdan yeni uygulama ve yöntemlerin kullanılmasına, öte yandan bazı konularda da ihtiyaçların artmasına sebebiyet vermektedir. Bununla birlikte en önemli konulardan bir tanesi ise bu uygulamaların kapsamının artışı, uygulamaların birbiri ile haberleşme, veri alışverişi sağlama, birbirlerinin sahip olduğu özellik ve yapıları kullanma gibi ihtiyaçları da ortaya çıkarmıştır. İşte bu ihtiyacı karşılayacak olan teknolojiye ise API (Application Programming Interface — Uygulama Programlama Arayüzü) teknolojisidir.
Yeteneklerini ve sahip olduğu data’lara (veri) bir başka uygulama ile paylaşacak olmak Web tabanlı uygulamanın gelişmesine de büyük katkı sağlamıştır. API teknolojisi sayesinde bir uygulamanın temeli veya kapsamında olmayan bir veriyi veya özelliği, bir istek (request) ve cevap (response) aracılığı ile kapsamına alabilmektedir. Bu aslında iki veya daha fazla uygulamanın belli standartlarla birbirleri ile haberleşmesi — konuşması olarak değerlendirilebilir. Hatta buna bir örnek verecek olursak, evde anneniz kek yapacak ancak kekte kullanmak için evde yumurtanın olmadığı fark edildi. Anneniz sizi komşuya bu eksikliği gidermek üzere gönderdi, sizde komşunun kapısını çaldınız ve yumurtanın olup olmadığını sordunuz. Buna karşılık olarak yumurta varsa yumurtalarla, yoksa da komşuda da olmadığını ifade edecek cümlelerle geri dönüyorsunuz. Yani bu eylemde komşunuza bir istekte bulunuyorsunuz (Request -> yumurtanız var mı ?) ve bunun sonucunda bir cevap alıyorsunuz (Response -> Yumurta var — Yumurta yok). Öte yandan bu komşunuz bu soruya-isteğe cevap verebilmesi için öncesinde sizi tanıyor olması gerekmektedir yani güvenilir birinin isteği olduğunu bilmesi gerekmektedir. Komşunuz sizi tanıdığı için güvenilirlik yönünden de bir sorun yoktur ve isteğiniz komşunuz tarafından cevaplandırılır. İşte bir API teknolojisinin de temelinde bu örnekteki süreç ve eylemler vardır.
Aynı örneği en basit hali ile gerçek bir örnek üzerinden anlatalım hatta çoğumuzun günlük hayatta kullandığı bir örnek ile daha da açıklık getirelim. Bilindiği üzere ülkemizde günlük olarak bir çok işlem e-Devlet üzerinden gerçekleştirilmektedir. e-Devlet üzerinde tüm vatandaşların bilgilerinin var olmasının yanı sıra e-Devlet bünyesinde kayıtlı olan veriler üzerinden işlemlerini sürdürebilen de bir çok uygulama vardır. Bazı Web sayfalarına giriş yaptığınızda giriş butonunun yakınlarında size “e-Devlet İle Giriş” şeklinde bir seçenek sunulur. Siz bu seçeneğe tıkladığınızda sizi e-Devlet sisteminin giriş paneline yönlendirir ve size ait olan bilgilerle giriş yapmanız beklenir. Siz bu bilgi alanlarını doldurup, “Giriş” butonuna tıkladığınızda sizi “e-Devlet İle Giriş” seçeceğini tıkladığınız sayfaya geri döndürür ve siz o uygulamaya çoktan giriş yapmış olursunuz.
Bu konuya teknik olarak biraz daha açıklık kazandıralım.
Siz “e-Devlet İle Giriş” seçeceğine tıkladığınızda bu seçeneği tıkladığınız sayfa sizin için e-Devlet sistemine bir referans linki oluşturuyor yani bir REQUEST eylemi gerçekleştiriyor. e-Devlet sistemi ise bu REQUEST’in içerisindeki verilerden isteğin amacını, güvenilirliğini denetliyor ve daha sonra RESPONSE (cevap) dönüyor. Tabi bu çok kısa bir süre içerisinde gerçekleşiyor ve siz aslında e-Devlet API’ını kullanarak bir başka sisteme giriş yapmış oluyorsunuz.
Bir kısa örnekle daha bu duruma son bir açıklık getirelim. COVID19 sürecinin de etkisi ile çoğumuzun da tercih etmekte olduğu e-Ticaret platformlarından satın aldığınız bir ürün için ödeme yaptığınız anı düşünün. Sistem sizden kart bilgilerinizi talep ediyor ve siz bu bilgileri tamamlayıp, ileri bir adıma geçtiğinizde sistem sizi başka bir sayfaya (genelde banka veya ödeme altyapısının sahibi olan sistemin sayfası) yönlendirir ve size gönderilen SMS ile ödeme işlemini onaylayıp, sonlandırırsınız. İşte e-Ticaret sisteminin sizden bilgileri aldıktan sonraki yaptığı çoğu işlem API kapsamındadır. Sizden aldığı bilgiyi ödeme altyapısı sağlayıcısına iletir ve kendi adına ödeme almasını talep eder. API, bu ve benzer açılardan çok fazla imkan, kolaylık, esneklik sunar ve öte yandan kapsamı genişletilebilir bir altyapıya sahiptir.
API teknolojisinin temelinde ki faktörlerden bir tanesi de veri tipleridir. İki farklı sistemin birbirleri ile iletişim kurmalarını sağlayacak olan ortak özelliklere ihtiyaç vardır ve bu iletişimi sağlayan veri taşıma yöntemleri bulunur. Bunlardan bir tanesi JSON, diğeri ise XML’dir.
Şimdi bu veri taşıma tiplerini biraz daha detaylandıralım.
JSON Nedir ?
JSON’ın açılımı, JavaScript Object Notation’dır. Key-Value çiftlerinden oluşan bir metin biçimidir ve veri depolamak, veriyi transfer etmek gibi amaçlarla kullanılır.
JSON API’lerde yoğun olarak tercih edilen bir veri taşıma yöntemidir. XML’e göre daha küçük bir yapıya sahip olduğu içinde performans açısından da tercih edilmektedir. Öte yandan herhangi bir .txt uzantılı bir Metin dosyasında bile JSON veri oluşturmak mümkündür.
Key : Anahtar bölümünde oluşturulan nesnenin özelliğini ifade eder ve tırnak işareti ile belirlenir. Örneğin isim değeri için { ‘adi’:’Muhsin’} bu gibi bir tanımlama yapılabilmektedir. Öte yandan JSON diğer veri tipleri ile de oluşturulabilir. Bolean, String, Integer, array gibi. Yine JSON veri tipinin bir diğer avantajı ise yazımı kolaydır.
XML Nedir ?
XML’in açılımı , Extensible Markup Language’tır ve yine JSON gibi verileri depolamak üzere geliştirilmiş bir veri taşıma — barındırma yöntemidir. XML JSON’a göre daha büyük bir yapıya sahiptir ve bu açıdan JSON’a göre daha yavaş kalabilir. XML üzerinde bir isim değerini taşımak istersek, <isim>Muhsin</isim> şeklinde oluşturulur. Öte yandan XML küçük ve büyük harfe duyarlıdır. Yani isim örneğimizden devam edecek olursak,
Şimdi bir API isteğini ve bu istekte geçen süreci inceleyelim. Bir sonraki yazımızda ise bir API isteğini bir kodlama dili aracılığı ile gerçekleştireceğiz ve kavramlar daha iyi oturmuş olacak, <isim>Muhsin</isim> ve <İsim>Muhsin</İsim> (ikincisinde ‘i’ harfi büyüktür) birbirinden farklıdır.
XML veri türü JSON’a göre daha karmaşık ifadelerle yazılır ve bu açıdan zaman zaman yazımı ve okunuşu açısından olumsuzluklarla karşılaşılabilir.
XML ve JSON veri tipleri tarayıcılar tarafından desteklenir ve tanınır. Bu açıdan API teknolojisinde ihtiyaca ve altyapıya göre ikisi arasında tercih edilir ve kullanılır.
Enver ŞANLI
Web Developer, Social Thinker & Farmer