Uygulama Programlama Arayüzleri (API’ler), son on yılda internet üzerinden yazılım etkileşimi ve entegrasyonunun önemli bir bileşeni haline geldi. API’ler, uygulamaların önceden tanımlanmış bir dizi kural kullanarak birbirleriyle etkili bir şekilde iletişim kurmasına olanak tanıyan bir köprü görevi görür.
API’ler, bir uygulamanın diğerine bağlanması gerektiğinde çalışır. Bu bağlantı, bir etkileşimi başlatan bir uygulama biçiminde başlar; bu etkileşim bir API isteği şeklinde gelir. Alıcı uygulama, belirli bir program çalıştırıldıktan sonra bir API Yanıtı ile yanıt verir. Tüm süreç, web erişimi olsun ya da olmasın gerçekleşebilen bir API işlemi olarak adlandırılır. API’ler, çeşitli uygulamaların internet üzerinden sorunsuz bir şekilde birbirleriyle etkileşim kurmasını mümkün kılar; Twitter sunucusuna sahip cep telefonunuz veya platformlar arası oynadığınız bir oyunun sunucusuna sahip oyun konsolunuz olsun.
API’leri, farklı dilleri konuşan iki kişinin etkili bir şekilde iletişim kurmasına yardımcı olan bir tercüman olarak düşünün.
API’leri “türler” terimi altında sınıflandırmanın çeşitli yolları vardır. İlk yol genellikle amaçlanan kullanım kapsamına bağlıdır. Bunlar genellikle dört ana API türü olarak adlandırılır ve bunlar:
Açık/genel API’ler: Adından da anlaşılacağı gibi, açık veya genel bir API, onları kullanmak isteyen hemen hemen herkesin kullanımına açık hale getirilmiş bir API’dir. Açık API’ler, internet üzerinden serbestçe paylaşılmalarına izin vermek için yapılmıştır. Genel API’ler çok az Kimlik Erişimi Yönetimi gerektirir veya hiç gerektirmez ve yalnızca API geliştiricisi API’yi kullanırken arama başına bir ücret atadığında para kazanma gerçekleşir. Açık API’ler, en az güvenli API türüdür.
İş Ortağı API’leri: İş Ortağı API’leri, esas olarak işletmeler arası düzeyde uygulamalar arasındaki iletişimi kolaylaştırmak için kullanılan lisans tabanlı API’lerdir. İş Ortağı API’leri, çeşitli kurumsal düzeydeki uygulamalar arasındaki iletişimi kolaylaştırmak için abonelik temelinde ödeme yapan iş ortaklarının kullanımı için özel olarak oluşturulmuştur. İş ortağı API’leri, daha güçlü yetkilendirme mekanizmaları, kimlik doğrulama mekanizmaları ve genel güvenlik önlemleri gerektirdiğinden, genel API’lerden çok daha güvenlidir.
Özel API’ler: Özel API’ler, kurum içinde barındırılan ve uygulamalar arasındaki iletişimi güçlendirmek için bir kuruluş içindeki geliştiriciler veya personel tarafından kullanılan dahili API’ler olarak da adlandırılır. Özel API’ler, bir kuruluş dışındaki personelle paylaşılmaz ve kullanıcılar için uygun kimlik doğrulama ve yetkilendirme eksikliği nedeniyle genellikle en güvenli API’ler değildir. Özel API’ler genellikle bulundukları kuruluşun genel güvenlik duruşuna güvenir ve güvenliklerine nadiren sahip olurlar. Ancak şirketler, özel API’leri korumak için daha güçlü güvenlik politikaları benimsiyor.
Bileşik API’ler: Bileşik API’ler, API isteklerini sırayla tek bir API çağrısında birleştirir. Bileşik API’ler, bir müşterinin bir çağrı zinciri kullanarak birkaç API çağrısı yapmasını ve karşılığında birkaç yanıt yerine bir yanıt almasını mümkün kılar. Bir istemci ile bir sunucu arasında karmaşık API çağrıları yaparken hız ve verimlilik konusunda genel yardım.
API’ler, kullandıkları protokollerin türüne göre de sınıflandırılabilir. API’lerin protokollere dayalı bu sınıflandırmasına genellikle Web Hizmeti API’leri veya API mimari stilleri denir ve bunlar:
DİNLENME: REST veya Temsili Durum Aktarımı veya RESTful API, HTTP isteklerini kullanarak verilere erişen ve verileri kullanan bir API mimari stilidir. REST API, tüm genel API’lerin %70’inden fazlasını oluşturan, en yaygın kullanılan API mimari stilidir. Esas olarak web uygulamalarıyla istemci/sunucu etkileşimlerinde, JSON, XML veya HTML gibi biçimlendirilmiş dilleri kullanarak web kaynaklarına istek döndürmede kullanılırlar.
REST API’leri tek tiptir, durum bilgisizdir ve önbelleğe alınabilir; yani genel mimari basitleştirilmiştir, gönderilen her istek, isteği anlamak ve tamamlamak için gerekli tüm bilgileri içerir ve yanıt verileri gelecekteki istekler için yeniden kullanılabilir. REST API’leri, API isteklerini istemci ile sunucu arasında güvenli bir şekilde aktarmak için SSL ve HTTPS kullanır.
Tipik REST API istek başlığı, bir URI, HTTP yöntemi, başlıklar ve bir yanıttan oluşur.
SABUN: SOAP veya Basit Nesne Erişim Protokolü API protokolü, XML formatında bilgi alışverişi yapmak için bir mesajlaşma formatı kullanan, iyi tanımlanmış, yüksek düzeyde yapılandırılmış ve sıkı bir şekilde düzenlenmiş bir API türüdür. Hem genel hem de özel API’ler, web servislerini destekleyen herhangi bir programlama dilinde kullanılabilen 20’den fazla farklı yöntemle SOAP’tan yararlanır. SOAP’ın mimari bir modeli yoktur, bu nedenle geri kalan API ile birlikte kullanılması imkansız hale gelir.
Güvenlik açısından SOAP, SSL (Güvenli Yuva Katmanı) ve WS-güvenliği kullanır. Bir SOAP API mesajının anatomisi, bir Zarf, bir başlık, bir gövde ve hata işleme için kullanılan bir hatadan oluşur.
RPC: Uzaktan Yordam Çağrısı veya RPC, en eski ve en temel API türüdür. Dağıtılmış uygulamalar oluşturmak için kullanılan bir istemci-sunucu mimarisidir. RPC, kullanıcıları harici ağlarda çalışan hizmetlere kolayca bağlayarak yerel olarak başlatılan iş yüklerini uzaktan çalıştırmak için bir araç sağlar. RPC, kullanıcıların eşzamanlı yanıtlarla da olsa aynı anda birden çok API çağrısı yapmasına izin veren çoklu iş parçacığına sahiptir.
Dış ağlar arasındaki hizmetlere yönelik API çağrılarını desteklemek için RPC, farklı programlama dilleri kullanılarak oluşturulmuş farklı dış ağlarda bulunan sunucular arasında iletişimsel bir bağlantı görevi gören bir Arayüz Tanımlama Dili’ne (IDL) güvenir. RPC ayrıca hem JSON-RPC hem de XML-RPC’yi yerelleştirerek JSON ve XML’i destekler.
GrafikQL: GraphQL, uygulama programlama arabirimleri (API’ler) için geliştirici dostu, hızlı ve esnek bir açık kaynaklı veri sorgulama dili ve sunucu tarafı çalışma zamanıdır. GraphQL, entegre bir geliştirme ortamında (IDE) dağıtılabilir, bu şekilde yapıldığında GraphiQL olarak bilinir.
GraphQL, geliştiricilerin tek bir API çağrısı kullanarak birden çok kaynaktan veri çekebilen istekler oluşturmasına olanak tanırken, aynı zamanda mevcut sorguları etkilemeden alan ekleme veya kaldırma esnekliği sağlar. GraphQL ayrıca geliştiricilerin, temelde sorgulanabilecek tüm olası verileri açıklayan bir yapı olan bir şema oluşturmasına olanak tanır. Bir sorgu geldiğinde, GraphQL bunu şemada karşılaştırır ve yürütmeden önce sorguyu doğrular.
Açık kaynak olan GraphQL, REST API’den daha iyi özellikler ve esneklik sunar ve popülerliğini artırmaya devam ederek geliştiricilerin mevcut kod tabanına ekleme yapmasına olanak tanır. GraphQL bazı ek güvenlik zorlukları sunar, bu nedenle geliştiricilerin bu güvenlik açıklarını anlamaları gerekir.
API’ler ayrıca kategoriye göre sınıflandırılabilir. Buradaki kategori, temel olarak API’lerin ne tür yazılımların altına düştüğü anlamına gelir. Bu, Sözlük, Hava Durumu, Spor, Haberler, Yiyecek ve Restoran, IP Coğrafi Konum, Makine Öğrenimi, Seyahat, Müzik, Anime ve Manga ve Video Oyunları API’lerinden Gönderim, Bloglama, Sohbet, Veri, Metin Özetleme, Akış, Yüz Tanıma, Finans ve Bulut API’leri.
API’ler, uygulamaların internet üzerinden nasıl iletişim kurduğunun belkemiğidir. Son on yılda popülariteleri, önemleri ve kullanımları büyük ölçüde arttıkça, hedefli saldırılara odaklanmaları da arttı. Son 12 ayda, şirketler API saldırı trafiğinde %681’lik bir artış kaydetti ve bu şirketlerin %95’inde aynı zaman diliminde bir API güvenlik olayı yaşandı.
Geleneksel güvenlik çözümlerinin genellikle API saldırılarına karşı koruma sağlamada etkisiz olduğunun farkına varıldığından, API güvenliği, çoğu şirketin tüm güvenlik duruşunun giderek daha önemli bir yönü haline geldi. Bunun yerine, API’lerin mümkün olduğu kadar güvenli kalmasını sağlamak için daha iyi API güvenlik uygulamalarına uyum sağlayacak bir odak kayması oldu.
Yazar hakkında
Musa, sertifikalı bir Siber Güvenlik Analisti ve Teknik yazarıdır. Kuruluşlar için ilgili siber güvenlik içeriği yazma ve en iyi güvenlik uygulamalarını yayma geçmişiyle Güvenlik Operasyonları Merkezi (SOC) Analisti ve Siber Tehdit İstihbarat Analisti (CTI) olarak çalışma deneyimine sahiptir. Bora’da düzenli bir yazardır.
Diğer ilgi alanları Havacılık, Tarih, Web3 ile DevOps ve DevSecOps’tur. Boş zamanlarında kendini bir kitaba gömmekten, anime, havacılık belgeselleri ve spor izlemekten ve video oyunları oynamaktan hoşlanıyor.