In this Article
“API” kısaltmasını muhtemelen onlarca kez görmüşsünüzdür. İnternetten ödeme yaptıysanız veya bir veri toplayıcı kullandıysanız, bu gizemli API’yi kullanmışsınızdır. Peki bu nedir? Bu makalede API’lerin ne olduğuna, hangi API protokollerinin bulunduğuna ve hangi API türlerinin mevcut olduğuna bakıyoruz.
API nedir ve nasıl çalışır?
Uygulama Programlama Arayüzü, farklı uygulamaların iletişim kurmasını sağlayan bir yazılım aracısıdır. API’ler ağırlıklı olarak sistemlerin arka ucunda yer alır; bu nedenle çalışmalarını görmez ve çoğu zaman o anda onları kullandığınızı bilmezsiniz.
Örneğin, favori haber sitenizi ziyaret eder ve bugünün hava durumu tahminini görürsünüz. Diğer benzer web siteleri de muhtemelen size aynı bilgiyi sunar. Peki bu verileri nereden alırlar? Haber ajanslarının tahmin yapmak için kendi hava istasyonları olmadığı açıktır. Bunun yerine bir meteoroloji merkezinden veri edinirler. Aynı zamanda bir web sitesi, bulunduğunuz konumla ilgili doğru bir tahmin sunmalıdır ve sizinle eş zamanlı olarak onlarca farklı yerden binlerce ziyaretçi bu haber sitesini ziyaret eder. Geliştiriciler veya web sitesi yöneticileri her ziyaretçi için tahminleri manuel olarak sunamaz ya da güncelleyemez. Bunun yerine API kullanırlar. Haber okumak için bu web sitesini her açtığınızda, konumunuzdaki hava durumunu öğrenmek üzere bir meteoroloji uygulamasını “çağırmak” için API kullanır ve uygulamanın yanıtını gösterir. Bu, telefonunuzu alıp arkadaşınızla iletişime geçmek için numarasını çevirmenize benzer. API, uygulamaların birbiriyle iletişim kurmak için kullandığı bir “telefon numarası” benzeridir.
API’ler haklı nedenlerle popülerdir ve yaygın biçimde kullanılır. İlk olarak geliştirme sürecini basitleştirirler. Geliştiricilerin tekerleği yeniden icat etmesine gerek kalmaz; bunun yerine aynı API’yi birçok projede kullanabilirler. Bu, geliştirme sürecini hızlandırır ve sonuç olarak zamandan ve maliyetlerden tasarruf sağlar. API’lerle uygulamalar birbirlerinin süreçlerine müdahale etmez; yalnızca gerekli verileri alırlar. Sonuç olarak bu durum güvenliğe katkı sağlar, hata olasılığını azaltır ve programların sorunsuz çalışmasına yardımcı olur.
Buna ek olarak API’ler, temel teknolojileri ve yapıları ne olursa olsun farklı sistemlerin iletişim kurmasına olanak tanır. Kullanıcılar için API’ler geniş bir işlev yelpazesi anlamına gelir.
API’lerden söz ederken çoğunlukla web API’lerini, örneğin internet bağlantısı gerektirenleri, kastederiz. Ancak bazı API’ler tek bir sistem ve cihaz içinde kullanılır, örneğin bir bilgisayarın işletim sisteminde, ve hiçbir zaman internet bağlantısına ihtiyaç duymaz. Bu makalede web API’lerine odaklanıyoruz.
API’lerin bileşenleri
Perde arkasına biraz daha yakından bakalım. API adı verilen bu kod parçası nelerden oluşur?
Her API’nin temelindeki ana fikir birlikte çalışabilirliktir. Başka bir deyişle, seçilen biçimi destekleyen her platform bir API ile aynı şekilde etkileşim kurabilmelidir. Bu nedenle, farklı geliştiriciler ve kullanılan çeşitli protokoller olsa bile API’lerin temel bileşenleri aynıdır.
API istemcisi
API istemcisi, istek gönderen herhangi bir uygulama, tarayıcı veya yazılımdır. Bir istemcinin istek göndermesini farklı şeyler tetikleyebilir. Örneğin, sayfayı yenilemek veya bir düğmeye basmak gibi kullanıcı eylemleri istemcinin istek göndermesini tetikleyebilir. Veritabanı sorguları gibi, sonunda gerçekleşen ve otomatik mantığa dayanan koşullar da tetikleyici görevi görebilir.
API isteği
API istekleri aynı standarda uymalıdır. Genellikle beş ana unsur içerir:
Uç noktalar
API’ler açısından uç noktalar, isteklerinizi yönelttiğiniz URL’lerdir. Hangi uç noktaların kullanılabilir olduğunu ve hangi biçimi kullanmanız gerektiğini öğrenmek için, API sağlayıcısının tüm ayrıntıları belirttiği API belgelerini dikkatle incelemelisiniz. Uç noktalar genellikle alan adını ve kullandığınız API’nin sürümünü içerir. Ayrıca çeşitli sorgu parametreleri de içerebilirler. Kullanılabilir parametreler hakkında bilgi yine API belgelerinde yer alır.
Yöntem
İsteğinizde bir sunucuya ne yapmasını istediğinizi söylemelisiniz. Dolayısıyla yöntem, sunucuya ne yapacağını bildiren bir komuttur. Yöntemler kullandığınız API protokolüne göre farklılık gösterir. Örneğin REST protokolü GET, POST, PUT, PATCH ve DELETE gibi HTTP yöntemlerinden yararlanır. Diğer protokollerin kendi yöntemleri vardır. Bir API kullanacaksanız, sağlayıcının bu API’nin hangi protokolü ve yöntemleri kullandığını açıkladığı belgelerini okuyun.
Parametreler
Sorgu parametrelerinin yanı sıra yol parametreleri, header parametreleri ve istek gövdesi parametreleri de vardır. Bunlar kimlik doğrulama, isteğinizi filtreleme ve gerekli ayrıntıları alıcı sunucuya iletmek için gereklidir. Yöntem sunucuya örneğin veri alma gibi ne yapacağını söylerken, parametreler size tam olarak ne iletmesi gerektiğini belirlemeye yardımcı olur.
Header’lar
API isteğindeki header’lar klasik bir rol üstlenir: istek ve istenen yanıt biçimleri hakkında ek veri, istenen işlemleri yapmaya yetkili olduğunuzu kanıtlayan yetkilendirme ayrıntıları ve istekler ile yanıtların nasıl önbelleğe alınacağına ilişkin ayrıntılar sağlarlar.
İstek gövdesi
Burası, istek parametrelerini kullanarak tüm temel verileri sağladığınız, isteklerinizin kalbidir. Bunu daha iyi anlamak için bir kargo paketi hayal edin. Uç noktalar, paketinizin gönderilmesini istediğiniz yerdir. Parametreler ve header’lar, alıcının adı ve telefon numarası gibi diğer gönderim verileridir; paketinizde kırılabilir eşyalar bulunup bulunmadığı, teslimatın ödenip ödenmediği veya ücretini alıcının mı ödemesi gerektiği gibi ek ayrıntıları da kapsar. İstek gövdesi ise paketin kendisi, kutunun içeriği, gönderdiğiniz eşyalardır. Belirtildiği gibi, istek gövdesi API sağlayıcısının belgelerde belirttiği farklı parametreleri içerir.
API sunucusu
API sunucusu, isteklerimizi gönderdiğimiz platform, yazılım, veritabanı veya başka herhangi bir şeydir. API’yi sağlar, tüm API verilerini depolar ve isteklerimizde belirttiğimiz işlemleri gerçekleştirir.
API yanıtı
İstek olan yerde yanıt da vardır. Yanıt, bir sunucunun isteğiniz üzerine gönderdiği şeydir. Yanıtlar da çeşitli yapı taşlarından oluşur.
Durum kodu
Durum kodu, isteğimizin başarılı olup olmadığını ve bir sunucunun bunu işleyip işleyemediğini gösterir. 200’lü kodlar isteğin başarılı olduğu, 300’lü kodlar yönlendirme yapıldığı, 400’lü kodlar istekte sorun olduğu ve 500’lü kodlar sorunun sunucu tarafında olduğu anlamına gelir.
Yanıt header’ları
Yanıt header’ları istek header’larına benzer. İstemciye çerez gönderir ve yanıt gövdesi hakkında ayrıntılar sağlarlar.
Yanıt gövdesi
Yanıt gövdesi, istenen verileri sağlayan bir dizi anahtar/değer çiftinden oluşur. Ancak yanıt gövdesi bir API yanıtının zorunlu bileşeni değildir. Bir sunucudan bazı verileri alıp size göndermesini isteseydiniz, bir yanıt alırdınız. Aynı zamanda bir sunucudaki verileri silmeye veya değiştirmeye çalışırsanız yanıt gövdesi görmezsiniz; yalnızca bir durum kodu alırsınız.
API protokolleri
Protokol, bir API’nin nasıl çalıştığını tanımlayan kurallar kümesidir. API’ler için çeşitli protokoller kullanılır.
REST
REST veya RESTful, en yaygın kullanılan API protokolüdür. Ancak bir protokolden çok mimari bir tarzdır. JSON veya XML biçimlerinde veri aktarmak için HTTP protokolüne dayanır. İstekler birbirinden bağımsızdır ve yanıtlar önbelleğe alınabilir. Basitlik ve ölçeklenebilirlik REST’in başlıca avantajlarıdır; bu nedenle web hizmetleri ve mobil uygulamalar için en çok tercih edilen seçenektir.
Öte yandan, aşırı veri alma veya eksik veri alma yaşanabilir; böylece istemci istediğinden fazla veri alabilir ya da tersine gerekli verilerin tümünü alamayabilir. Ayrıca REST, HTTP protokolünü kullandığından tüm veri türleri, uygulamalar ve ortamlar için uygun olmayabilir. REST’in güvenlikle ilgili kaygıları da vardır; doğru şekilde bakımı yapılmazsa güvenlik açıkları barındırabilir.
SOAP
Basit Nesne Erişim Protokolü ya da SOAP, REST’ten çok daha katı ve karmaşıktır. XML veri standardını kullanır ve HTTP ile SMTP dahil olmak üzere veri aktarımı için çeşitli protokolleri destekleyebilir. WS-Security gibi gelişmiş güvenlik özelliklerini destekler. Temel olarak finansal hizmetler veya Salesforce gibi kurumsal uygulamalar gibi, geniş bir kitle tarafından kullanım kolaylığından ziyade güvenlik ve resmiyet gerektiren durumlarda kullanılır.
RPC
Uzak yordam çağrısı protokolü, verileri JSON ve XML biçimlerinde işler. Ancak veri kaynağı yerine yöntem çağırdığı için REST ve SOAP’tan büyük ölçüde farklıdır. RPC yanıtı bir eylemin tetiklendiğini veya başarısız olduğunu gösterir. Bir RPC sunucusunu çağırmak sunucunun durumunu değiştirdiğinden, sağlayıcılar ve kullanıcılar arasında yüksek düzeyde güvenliğe ihtiyaç vardır. Bu nedenle RPC API’leri genellikle özeldir. Ancak RPC, veri aktarmak için çoğu tarayıcının yerel olarak desteklemediği HTTP/2 protokolüne dayanır; dolayısıyla doğru çalıştığından emin olmak için ek donanıma ihtiyacınız olabilir.
GraphQL
GraphQL bir protokol olarak adlandırılsa da aslında bir sorgu dilidir. Çok sayıda uç noktası bulunan REST’ten farklı olarak GraphQL’de genellikle yalnızca bir uç nokta vardır. GraphQL, tek bir sorguda birden fazla istek yapılmasını mümkün kılar. Kullanıcılar hangi verilere ihtiyaç duyduklarını belirtebilir, böylece aşırı veya eksik veri alma önlenir. Öte yandan GraphQL’in veri önbelleğe alma konusunda bazı zorlukları vardır. Ayrıca sağlayıcıların, kullanıcıların sorgu oluşturabilmesi için hangi parametrelerin mevcut olduğunu bildiren kapsamlı belgeler sunması gerekir.
API türleri
API’leri hedef kitlelerine veya yapılarına göre sınıflandırmanın çeşitli yolları vardır. Hedef kitle açısından ele alırsak herkese açık, iş ortağı ve özel olabilirler; yapılarına göre değerlendirdiğimizde ise bileşik, birleşik, mikro hizmet ve monolitik olabilirler.
Herkese açık API’ler
Açık veya harici olarak da adlandırılan herkese açık API’ler geniş bir kitle için tasarlanır. Kısıtlamaları yoktur ya da çok azdır; kimlik doğrulama veya kayıt gerektirseler bile süreç kolaydır ve kullanıcıların bu API’yi kullanmak için herhangi bir niteliğe sahip olması gerekmez. Ancak açık API’ler yine de ödeme gerektirebilir veya ücretsiz hesapların özelliklerini sınırlayabilir. Örneğin Google Maps API, herkese açık bir API’dir.
Özel API
Bu API türü dahili API olarak da adlandırılır. Şirket içindeki kişiler gibi küçük bir kullanıcı grubunu hedefler. Kullanıcıların bu tür API’lere erişmek için izne ihtiyacı vardır. Güvenli olmaları gerektiğinden kimlik doğrulama zaman alabilir ve karmaşık olabilir.
İş ortağı API’si
İş ortağı API’leri herkese açık ve özel olanların arasındadır. Temel kullanım alanları iki şirket veya işletme arasında veri paylaşımıdır; bu nedenle bu API’ler hâlâ kimlik doğrulama gerektirir ve güvenlidir. Ayrıca bir kullanıcı grubunu hedeflerler, ancak bu grup özel API’lerdeki gruptan daha büyüktür. Bu API’ler aracılığıyla paylaşılan bilgiler önemlidir ve kesinlikle geniş bir kitleye yönelik değildir, ancak yine de özel API’ler aracılığıyla paylaşılan veriler kadar gizli değildir.
Ayrıca bazen dördüncü tür olan OpenAPI Standard’dan söz edilir. Ancak bu başka bir API türü değil, herkese açık API’ler yazmak için bir çerçevedir. Özgün adı Swagger’dı ve bu araç yönergeler sunar; böylece API yazmak ve ardından kullanmak daha basit ve hızlı olur. Ancak tüm herkese açık API’ler standardı izlemediği için herkese açık API’leri “açık API’ler” olarak adlandırmak da doğru değildir. Ayrıca özel API’ler, herkese sunulmasalar bile OpenAPI standardını kullanabilir.
Monolitik API’ler
Bu tür API’ler, karmaşık bir kaynağa erişim sağlayan tek bir kod tabanı olarak oluşturulur. Avantajları arasında öngörülebilir işlevsellik ve kararlılık bulunur. Öte yandan çok sayıda veri bağlantılı olduğundan ölçeklendirmek veya güncellemek zordur ve değişiklikler öngörülemeyen sonuçlara yol açabilir.
Mikro hizmet API’leri
Buna karşılık mikro hizmet API’lerinde her API farklı ve belirli bir amaca hizmet eder. Tüm sistemi etkilemeden bunları güncellemek veya artık gerekli olmayan bölümlerini kapatmak kolaydır. Ancak mikro hizmet API’leri çok büyük miktarda ayrı istek üretir.
Bileşik API’ler
Bileşik API’ler burada devreye girer. Tek bir çağrıda birden fazla uç noktayı hedefleyebilir, en etkili çağrı kümesini belirleyerek size gerekli verileri sunabilir ve yinelenen kodları önleyebilirler.
Birleşik API’ler
Birleşik API’ler bileşik olanlara benzer; tek bir API üzerinde farklı uç noktaları istemek yerine çeşitli API’leri isterler. Seçim ihtiyaçlarınıza bağlıdır.
API testleri ve izleme
Diğer tüm yazılımlar gibi API’ler de kararlılığı, güvenliği ve yüksek düzeyli performansı sağlamak için test ve izleme gerektirir. API’leri manuel olarak test edebilir veya otomatik testler gerçekleştirebilirsiniz. Çeşitli API testleri vardır:
- işlevsel test – bir sunucunun isteklere yanıt verdiğini ve yanıtlar ile veri biçimlerinin doğru olduğunu doğrulamak için;
- yük testi – trafik artışları olduğunda API’nin doğru çalışıp çalışmadığını doğrulamaya yardımcı olur;
- güvenlik testi – dolandırıcılar için hiçbir açık bırakılmadığından emin olmak için gereklidir;
- regresyon testi – değişiklik yapıldığında, beklenmeyen ve istenmeyen sonuçlar oluşmadığından emin olmak için regresyon testi gereklidir;
- hata toleransı testi – DDoS saldırısına yol açabilecekler gibi, potansiyel olarak zararlı isteklere sistemin nasıl yanıt verdiğini doğrulamak için uygundur.
Geliştiriciler API testlerini hem geliştirme hem de dağıtım aşamalarında gerçekleştirir.
Özetle
API, teknolojilerden en iyi şekilde yararlanmanıza yardımcı olan başka bir araçtır. Kullandığınızı fark etmeseniz bile favori web sitenizdeki veya uygulamanızdaki birçok işlev API’ler sayesinde mümkündür. DataImpulse ise kendinizi rahat hissetmeniz için teknolojileri her zaman anlaşılır bir dille açıklamak üzere buradadır. Ayrıca bir aracı başka bir araçla güçlendirmek size en iyi sonucu verebilir. Örneğin API testi proxy’lerle çok daha verimli hâle gelir. API’mizi de geliştirdik; böylece proxy’lerimizi yeniden satmak ve bizimle para kazanmak için kullanabilirsiniz. Daha fazla bilgi için [email protected] adresinden bize yazın veya ekranın sağ üst köşesindeki “Şimdi deneyin” düğmesine basın.
