API TÜRLERİ 2
API(Application Programming Interface), kısaca iki yazılımın birbirleriyle iletişim kurmasına ve veri alışverişinde bulunmasına yardımcı olan bir yazılım arayüzüdü olduğudan bahsetmiştik. Bu makalemizde de API’ların sınıflandırılması ve API’lar hakkında bilinmesi gereken önemli noktaları detaylandırıcağız.
API Türleri Nelerdir?
Birden çok amaç için kullanılan, bireysel ve benzersiz kullanım senaryolarına göre tasarlanmış birçok farklı API türü vardır . En çok kullanılan türler API’lar kullanım şekilleri ve mimarilerine göre sınıflandırılır.
1 –Kullanım Amaçlarına Göre API Çeşitleri
Open API (Public API)
Diğer kullanıcıların kullanımına açık olan genel API'ler olarak da adlandırılır. Open API'ler harici kullanıcıların verilere ve hizmetlere erişmesine yardımcı olur. HTTP protokolleri ile eriştiğimiz açık kaynaklı bir uygulama programlama arayüzüdür. Bu tür API'ler şirketler tarafından halka açıktır ve harici kullanıcıların belirli işlevlere veya verilere erişmesine olanak tanır. Tutarlılığı, yeniden kullanılabilirliği ve farklı platformlardan gelen hizmetlerin ve verilerin kolay entegrasyonunu içeren, modern API geliştirmede çok popüler bir API türüdür. Geliştirici dostu bir ortama sahiptir ancak bu Open API'leri oluşturan geliştiricilerin, API'nin verimli kullanılabilirliğine ilişkin belgelerden çok iyi haberdar olmaları gerekir.
Partner API
Bir geliştiricinin erişim sağlamak için belirli haklara veya lisanslara ihtiyaç duyduğu bir API türüdür. Partner API'leri herkese açık değildir. Bu API'ler, harici geliştiricilerin hizmetlerine erişmesine ve bunları uygulamalarına entegre etmesine olanak tanıyan üçüncü taraf şirketler tarafından sağlanır. Harici sistemlerin şirketle işbirliği yapması ve sistemimizin yeteneklerine erişmesi son derece güvenli ve kontrollü bir yoldur. Partner API'sinin en iyi örneklerinden biri, çevrimiçi işletmelerin envanter yönetimi, nakliye seçenekleri ve iş analizleri gibi çeşitli işlevler sağlayarak Amazon.com ile bağlantı kurmasına olanak tanıyan Amazon API'sidir.
Internal API
Private API olarak da bilinir; bu tür API'yi yalnızca dahili bir sistem ortaya çıkarır. Bunlar harici kullanıcılardan ziyade şirketin iç kullanımına yönelik tasarlanmıştır. Private API'ler dahili kullanım için kullanıldığından, kullanım senaryolarına bağlı olarak veri formatları üzerinde anlaşmaya varılabilir. Bunlar aynı zamanda farklı ekipler arasında veri ve hizmetlerin daha iyi işbirliği için de oluşturulabilir. Kuruluş içinde oldukça kontrollü bir ortama sahiptir, dolayısıyla bu API'nin kullanımı daha etkili olur, işbirliğini ve yeniden kullanılabilirliği teşvik eder ve sonuçta daha verimli bir geliştirme sürecine yol açar.
Composite API
Farklı veri ve hizmetleri birleştiren bir API türüdür. Composites API'lerini kullanmanın temel nedeni, performansı iyileştirmek ve yürütme sürecini hızlandırmak ve web arayüzlerinde dinleyicilerin performansını iyileştirmektir. Bazen bazı web siteleriyle etkileşim kurmak çok karmaşık ve zaman alıcı bir süreç içerdiğinden, bu sorunu çözmek için Composite API kullanıyoruz. Geliştiricilerin, karmaşık etkileşimleri basitleştiren ve harika bir kullanıcı deneyimi sağlayan tek bir API uç noktası aracılığıyla bir dizi ilgili işlevselliğe erişmesine olanak tanır.
2- Mimari yapısına Göre API Çeşitleri
En iyi 6 API mimari stilini ve bunların avantajlarını, dezavantajlarını ve kullanım durumlarını görelim.
REST
REST, bir sunucudaki verilerle çalışmak için web standartlarını ve adreslerini kullanmanın bir yoludur. Popülerdirler, uygulanması kolaydır ve HTTP yöntemlerini kullanırlar. Twitter veya YouTube gibi günlük olarak etkileşimde bulunduğunuz web hizmetlerinin çoğu, Restful API'leri tarafından desteklenmektedir. Örneğin, bir istemci veri almak için GET'i, yeni veri oluşturmak için POST'u, verileri değiştirmek için PUT'u veya verileri kaldırmak için DELETE'i kullanabilir. Veriler genellikle JSON veya XML gibi formatlardadır.
Artıları
- Kullanımı ve anlaşılması basit ve kolaydır.
- Web kurallarına uyar ve mevcut standart ve protokolleri kullanır.
- Hızlıdır ve önbelleğe almayı ve durumsuzluğu desteklediğinden birçok isteği karşılayabilir.
- Esnektir ve farklı formatları ve medya türlerini kullanabilir.
Eksileri
- Açık bir sözleşmesi veya şeması yoktur, bu da onu belirsiz ve tutarsız hale getirebilir.
- Çok sayıda isteğe ihtiyaç duymasına ve çok fazla veya çok az veri almasına neden olabilecek karmaşık sorguları veya işlemleri desteklemez.
- Her zaman açık veya doğru olmayan HTTP durum kodları kullandığından, hataları veya istisnaları iyi bir şekilde ele almaz.
Kullanım
- Veri modeli basit ve kararlıdır.
- İstemciler ve sunucular birbirine bağımlı değildir.
- Hız ve ölçeklenebilirlik önemlidir.
-
SOAP
SOAP, uygulamalar arasında bilgi alışverişi yapmak için XML mesajlarını ve önceden tanımlanmış bir sözleşmeyi kullanan bir stildir. Açık ve katı bir sözleşmesi vardır ve karmaşık sorguları ve işlemleri destekler, ancak karmaşıktır, ayrıntılıdır ve ölçeklenebilir veya performanslı değildir.
Artıları
- Birlikte çalışabilirliği ve uyumluluğu sağlayan açık ve katı bir sözleşmeye sahiptir.
- İşlemler, güvenlik veya kimlik doğrulama gibi karmaşık sorguları ve işlemleri destekler.
- Ayrıntılı bilgi sağlayan SOAP hatalarını kullandığından hataları ve istisnaları iyi bir şekilde ele alır.
Eksileri
- Kullanımı ve anlaşılması karmaşık ve ayrıntılıdır.
- Web ilkelerine uymaz ve mevcut protokollere ek yük getirir.
- Önbelleğe almayı veya durumsuzluğu desteklemediğinden ölçeklenebilir veya performanslı değildir.
- Herhangi bir değişiklik için sözleşmede değişiklik yapılmasını gerektirdiğinden esnek veya genişletilebilir değildir.
Kullanım
- Veri modeli karmaşık ve dinamiktir.
- İstemciler ve sunucular sıkı bir şekilde birbirine bağlıdır ve bağımlıdır.
- Güvenlik ve güvenilirliğin önemli olduğu finansal hizmetlerde ve ödeme ağ geçitlerinde yoğun olarak kullanılır
GraphQL
GraphQL yalnızca bir mimari stil değil aynı zamanda müşterilerin ihtiyaç duydukları belirli verileri istemelerine olanak tanıyan bir sorgulama dilidir. Bu, verilerin gereğinden fazla veya az getirilmesinin artık söz konusu olmadığı anlamına gelir. Tam olarak neye ihtiyacınız olduğunu soruyorsunuz. Bu, daha verimli ağ iletişimine ve daha hızlı yanıtlara yol açar. Facebook, milyarlarca kullanıcısına verimli ve kesin veriler sunmak için GraphQL'i geliştirdi. Artık GitHub ve Shopify gibi şirketler tarafından kullanılıyor. Esnekliği ve verimliliği, onu karmaşık veri gereksinimleri olan uygulamalar için güçlü bir seçim haline getiriyor. Ayrıca verileri değiştirmek için mutasyonları ve veriler değiştiğinde canlı güncellemeler almak için abonelikleri de destekler.
Artıları
- Kendi şema tanımlama dilini kullandığından her türlü sunucu dili veya çerçevesiyle çalışır.
- Yeterli veriyi almak için birden fazla isteğin gerekebileceği REST'ten daha verimli hale getiren tek bir uç noktaya sahiptir.
- Güçlü bir şekilde yazılmıştır, bu da verilerin istemci ile sunucu arasında tutarlı ve uyumlu olmasını sağlar.
- İstemcilerin yalnızca ihtiyaç duydukları verileri almasına olanak tanır, bu da verilerin gereğinden fazla getirilmesini veya gereğinden az getirilmesini önler.
Eksileri
- Yeni bir sözdizimi ve mantık öğrenmeyi gerektirdiğinden kullanımı ve anlaşılması karmaşık ve zordur.
- Performansı ve ölçeklenebilirliği etkileyebilecek önbelleğe almayı varsayılan olarak desteklemez.
- GraphQL katmanında hatalar olsa bile her zaman HTTP 200 durum kodunu döndürdüğü için hataları iyi işlemez.
Kullanım
- Veri modeli, iç içe geçmiş ve ilişkisel verileri işleyebildiği için karmaşık ve dinamiktir.
- İstemcilerin kendi veri gereksinimlerini tanımlamasına olanak tanıdığı için istemciler ve sunucular birbirine bağımlı değildir.
· Aktarılan veri miktarını azalttığı için bant genişliği ve performans önemlidir
Grapql Örneği
GraphQL en temelde veri modelimizi tutan bir şemaya, verileri alacağı bir veri setine ve şemada tanımladığımız tiplere karşılık gelen verileri ilgili data setinden dönecek bir resolver’a ihtiyaç duyar.
Her GraphQL sunucusu, client’ın sorgulayabileceği veri yapısını tanımlamak için bir şema kullanır. Veri sorgulama işlemi için Query, veri ekleme, silme veya güncelleme gibi işlemler için ise Mutation kullanılmaktadır.
Şemanın hazırlanması kullanılan programlama diline göre farklılık gösterir.Şema hazırlandıktan sonra veriler veri kaynağından alınarak istemciye iletilir.
const Query = new GraphQLObjectType({
name: 'Query',
description: 'Açıklama',
fields: {
user: {
type: User,
args: { name: { type: GraphQLString } },
resolve(parent, args) {
// Veriler buradan gönderiliyor.
// return veri.kaynagi()
}
}
}
});
Yukarıda Query barındıran basit bir şema bulunmaktadır. Şema tanımlama detayları, Query, Mutation ve daha fazlası için https://graphql.org/learn/schema/ adresinden detaylı bilgi edinebilirsiniz.
gRPC
gRPC moderndir, yüksek performanslıdır ve protokol arabelleklerini kullanır. Mikro servis mimarilerinin favorisidir ve Netflix gibi şirketler, geniş hizmet içi iletişimlerini yönetmek için gRPC'yi kullanır. Ancak tarayıcı istemcileriyle çalışıyorsanız, sınırlı tarayıcı desteği nedeniyle gRPC bazı zorluklara neden olabilir.
Artıları
- Hizmetler arasında birlikte çalışabilirliği ve uyumluluğu sağlayan açık ve katı bir sözleşmeye sahiptir.
- Akış, çift yönlü iletişim, kimlik doğrulama veya şifreleme gibi karmaşık sorguları ve işlemleri destekler.
- Gecikmeyi ve bant genişliğini azaltmak için ikili format ve HTTP/2 özelliklerini kullandığından hızlı ve etkilidir.
Eksileri
- Protokol arabellek dosyalarının oluşturulmasını ve derlenmesini gerektirdiğinden kullanımı ve anlaşılması karmaşık ve zordur.
- Standart web araçları veya tarayıcılarla uyumlu olmayan özel başlıklar ve yöntemler kullandığından web ilkelerine uymaz.
Kullanım
- Veri modeli, yapılandırılmış ve yapılandırılmamış verileri işleyebildiği için karmaşık ve dinamiktir.
- Hizmetlerin birbirlerinin yöntemlerini doğrudan çağırmalarına izin verdiği için hizmetler birbirine bağımlıdır.
- Hız ve verimlilik önemlidir; çünkü ek yükleri en aza indirir ve verimi en üst düzeye çıkarır.
WebSocket
WebSocket tamamen gerçek zamanlı, çift yönlü ve kalıcı bağlantılarla ilgilidir. Düşük gecikmeli veri alışverişinin önemli olduğu canlı sohbet uygulamaları ve gerçek zamanlı oyunlar için mükemmeldir.
Artıları
- Tek bir bağlantı kullandığından ve her mesaj için başlıklara veya çerezlere ihtiyaç duymadığından HTTP'den daha hızlı ve daha verimlidir.
- Aynı bağlantı üzerinden metin, ikili veya akış verileri gibi farklı türde mesajlar gönderip alabilir.
- Bir isteği beklemeden verileri sunucudan istemciye iletebilir, bu da gerçek zamanlı ve olay odaklı iletişime olanak tanır.
Eksileri
- WebSocket protokolünü veya yükseltme başlığını anlamayan bazı eski tarayıcılar veya proxy'ler tarafından desteklenmez.
- HTTP'ye wss://benzer bir şema kullanmadıkları sürece şifreleme veya kimlik doğrulama kullanmadıkları için varsayılan olarak güvenli değildir .
- Her iki taraftaki bağlantı veya mesajlar hakkında herhangi bir bilgi saklamaz, bu da bunların durum bilgisi olmadığı anlamına gelir.
Kullanım
- Web uygulamasının sohbet, oyun veya akış gibi hızlı ve etkileşimli veri alışverişine ihtiyacı vardır.
- Web uygulaması, her iki tarafın aynı anda farklı türde birden fazla mesaj gönderip alabileceği çift yönlü ve çoğullanmış iletişime ihtiyaç duyar.
- Web uygulaması, sunucunun istemciye bir istek beklemeden veri gönderebildiği gerçek zamanlı ve olay odaklı iletişime ihtiyaç duyar.
Webhooks
Web hooks, sunucuların bir şey olduğunda istemcilere mesaj göndermesinin bir yoludur. Olaylarla ilgili bilgi içeren yükleri iletmek için HTTP geri aramalarını veya POST isteklerini kullanırlar. İstemciler, yükleri alabilecek URL'leri sağlayarak Webhook sunuculara kaydederler. Webhook tamamen olaya dayalı, HTTP geri aramaları ve eşzamansız işlemlerle ilgilidir.
Artıları
- Standart HTTP yöntemlerini ve formatlarını kullandığı için kullanımı ve anlaşılması basit ve kolaydır.
- Mevcut standartlardan ve protokollerden yararlandığı için web ilkelerini takip eder.
- Yoklama veya bekleme olmadan eş zamansız iletişimi desteklediği için ölçeklenebilir ve performanslıdır.
Eksileri
- Sunucular ve istemciler arasında tutarsızlığa ve belirsizliğe yol açabilecek açık veya katı bir sözleşmesi yoktur.
- Karmaşık sorguları veya işlemleri desteklemez, onay veya geri bildirim olmaksızın yalnızca tek yönlü bildirimler gönderir.
- Hataları iyi ele almaz, başarısızlık durumunda yeniden deneme veya onay sağlamaz.
Kullanım
- Olay odaklı bildirimler (GitHub, yeni bir taahhütte bulunulduğunda diğer sistemlerinizi bilgilendirmek için webhooks kullanır.)
- Veri modeli, temel türleri ve alanları işleyebildiği için basit ve kararlıdır.
- Sunucular ve istemciler doğrudan iletişim veya koordinasyon gerektirmediğinden birbirlerine bağımlı değildirler.
- Performans ve ölçeklenebilirlik önemlidir çünkü iletişimin yükünü ve gecikmesini azaltırlar.
API |
ARTILAR |
EKSİLER |
Kullanım Durumları |
REST |
Basit, esnek, ölçeklenebilir, web dostu |
Açık bir sözleşme yok, karmaşık sorgular yok, hata yönetimi zayıf |
Veri odaklı uygulamalar, web hizmetleri, önbelleğe alma, durumsuzluk |
SOAP |
Açık sözleşme, karmaşık sorgular, iyi hata yönetimi |
Karmaşık, ayrıntılı, ölçeklenebilir değil, web dostu değil |
İşlemsel uygulamalar, güvenlik, kimlik doğrulama, birlikte çalışabilirlik |
GraphQL |
Dilden bağımsız, tek uç nokta, güçlü bir şekilde yazılan, veri verimliliği |
Karmaşık, kullanımı zor, önbelleğe alma yok, zayıf hata yönetimi |
Karmaşık ve dinamik veri modelleri, müşteri odaklı gereksinimler, bant genişliği ve performans |
gRPC |
Dilden bağımsız, açık sözleşme, hızlı ve etkili |
Karmaşık, kullanımı zor, web dostu değil, esnek değil |
Karmaşık ve dinamik veri modelleri, mikro hizmet iletişimi, hız ve verimlilik |
WebSocket |
Hızlı ve verimli, çift yönlü ve çoğullamalı iletişim, gerçek zamanlı ve olay odaklı iletişim |
Bazı eski tarayıcılar veya proxy'ler tarafından desteklenmez, varsayılan olarak güvenli değildir ve durum bilgisi yoktur |
Sohbet, oyun veya akış gibi hızlı ve etkileşimli veri alışverişi |
Webhooks
|
Basit, kullanımı kolay, web dostu, ölçeklenebilir |
Açık bir sözleşme yok, karmaşık sorgular yok, hata yönetimi zayıf |
Basit ve istikrarlı veri modelleri, olaya dayalı bildirimler, performans ve ölçeklenebilirlik |
API'ler ve Web Servisleri
Bir web hizmeti ve bir API çok benzer iki kavramdır, bu nedenle benzerlikleri ve farklılıkları anlamak zor olabilir.
Web Servisi nedir?
Web hizmeti, iki makinenin bir ağ üzerinden birbirleriyle iletişim kurmasının bir yoludur.
Bir bilgisayarda çalışan bir web sunucusu, diğer bilgisayarlardan gelen istekleri dinler. Ağ üzerinden başka bir bilgisayardan istek alındığında, Web hizmeti istenen kaynakları döndürür. Bu kaynak JSON, XML, bir HTML dosyası, Görüntüler, Ses Dosyaları vb. olabilir.İsteğin bir ağ üzerinden yapılması gerekliliğine dikkat etmek önemlidir
Peki fark nedir?
Tüm API'lere internet (ağ) üzerinden erişilemezken, Web servislere her zaman bir ağ üzerinden erişilmelidir. İşte fark bu.
Tüm Web Hizmetleri API'dir, ancak tüm API'ler Web hizmetleri değildir. |
Web servis, API’ın bir alt kümesidir. REST API, SOAP API , GraphQL Web Service API'si oluşturmak için standartlaştırılmış mimari stillere örnek verilebilir
Web Servis |
API |
Web hizmetleri, bir ağ bağlantısı üzerinden erişilmesi gereken bir API türüdür.
|
API'ler uygulama arayüzleridir, yani bir uygulama başka bir uygulamayla standart bir şekilde etkileşime girebilir.
|
Bütün Web Servşisleri API’dır. |
Her API bir Web Servis değildir. |
İletişim için REST, SOAP ve GraphQL kullanılır. |
Herhangi bir iletişim tarzı kısıtlaması yoktur. |
Bir web servisi yalnıza IIS’de barındırılabilir. |
API’lar IIS’de veya bir uygulama içinde barındırılabilir. |
Açık kaynak değildir ve yalnızca XML’i anlayan client tarafından kullanılabilir. |
Açık kaynak kodludur ve XML, JSON dahil olmak üzere çeşitli biçimleri anlayan client tarafından kullanılabilir. |
Zeynep Sultan EROĞLU
Kategoriler
Son Gönderiler
-
Power BI'da Kümülatif Toplam Hesaplama: Adım Adım Rehber
-
Endüstri 4.0: Geleceğin Üretim Devrimi
-
Kripto Para Varlıkları: Geleceğin Finansal Aracı mı?
-
Toksik Lider ve Örgütsel Sağlık
-
Geleceğin İş Dünyasında Hibrit Çalışma: Esneklik ve Verimliliği Bir Arada Sunmak
-
Tarayıcıda Veri Saklama Yöntemleri: LocalStorage, SessionStorage ve Cookie