API nedir? Uygulama programlama arayüzleri açıklandı

API, komut satırı araçlarından kurumsal Java koduna ve Ruby on Rails web uygulamalarına kadar her yerde geçerli olan bir kavram olan uygulama programlama arayüzü anlamına gelir. API, ayrı bir yazılım bileşeni veya kaynağıyla programlı olarak etkileşim kurmanın bir yoludur.

Her bir kod satırını sıfırdan yazmazsanız, her biri kendi API'sine sahip harici yazılım bileşenleriyle etkileşime gireceksiniz. Tamamen sıfırdan bir şeyler yazsanız bile, iyi tasarlanmış bir yazılım uygulamasında, kodu düzenlemeye ve bileşenleri yeniden kullanılabilir hale getirmeye yardımcı olacak dahili API'ler bulunur. Ayrıca, web üzerinde başka bir yerde geliştirilen işlevsellikten yararlanmanıza izin veren çok sayıda genel API vardır.

API nedir?

Bir API, bir yazılım bileşeniyle olası etkileşimlerin bir özelliği olarak tanımlanır. Bu tam olarak ne anlama geliyor? Bir arabanın bir yazılım bileşeni olduğunu hayal edin. API'sı, neler yapabileceğiyle ilgili bilgileri içerir — hızlandırma, frenleme, radyoyu açma, vb. Ayrıca, bunları nasıl yaptırabileceğinizle ilgili bilgileri de içerir . Örneğin hızlanmak için ayağınızı gaz pedalına koyup itiyorsunuz.

API, ayağınızı gaza bastığınızda motorun içinde neler olduğunu açıklamak zorunda değildir. Bu nedenle, içten yanmalı motorlu bir araba kullanmayı öğrendiyseniz, tamamen yeni bir dizi beceri öğrenmenize gerek kalmadan elektrikli bir arabanın direksiyonuna geçebilirsiniz. Ne ve nasıl bilgi API içinde bir araya geldiği tanımı araba kendisinden soyut ve ayrıdır.

Unutulmaması gereken bir nokta, bazı API'lerin adının genellikle hem etkileşimlerin özelliklerine hem de etkileşimde bulunduğunuz gerçek yazılım bileşenine atıfta bulunmak için kullanılmasıdır. Örneğin, "Twitter API" ifadesi, yalnızca Twitter ile programlı bir şekilde etkileşim kurmaya yönelik kurallar dizisine atıfta bulunmakla kalmaz, aynı zamanda genel olarak etkileşimde bulunduğunuz şeyi ifade edecek şekilde anlaşılır. Twitter API. "

Soyutlama katmanı olarak API

Yazılım söz konusu olduğunda, API'ler kelimenin tam anlamıyla her yerdedir. API'ler, bilgisayar bilimindeki en temel kavramlardan biri ile el ele gider: soyutlama. Soyutlama, karmaşık eylemlerin basit bir şekilde ele alınabilmesi için bir sistemin karmaşıklığını düzenlemenin bir yoludur. Bu soyutlamayı, Amazon'dan zımba sipariş etmek için kullanabileceğiniz pille çalışan, basma düğmeli devre kartları olan Amazon Dash Düğmeleri gibi düşünün. Şöyle görünüyorlar:

Amazon'dan bir Dash Düğmesi sipariş edersiniz ve akıllı telefonunuzdaki bir uygulamayı Wi-Fi ağınız, Amazon hesabınız ve en sevdiğiniz kağıt havlu markanız gibi bir ürünle ilişkilendirmek için kullanırsınız. Ardından, daha fazla kağıt havlu sipariş etmek istediğinizde, sadece düğmeye basmanız yeterlidir. Kısa Çizgi Düğmesi İnternete bağlanır ve hesabınıza bir sipariş vermek için bir mesaj gönderir. Birkaç gün sonra kapınıza kağıt havlular gelir.

Bir API gibi, Dash Button da her tür karmaşıklığı perde arkasına gizleyen, keyifli ve basit bir arayüzdür. Sipariş ettiğiniz ürünün kimliği bazı veritabanlarından alınmalıdır. Teslimat adresiniz hesabınızdan çekilmelidir. Kağıt havlularınızı depolayan en yakın ikmal merkezi belirlenmeli, ardından mevcut stoktan bir ürünün çıkarılması ve paketlenmesi için bilgilendirilmelidir. Son olarak, paket, tüm paketlerin hedeflerine verimli bir şekilde ulaşmasını sağlayacak şekilde, diğer paketlerle birlikte bazı uçak, kamyon ve kamyonet kombinasyonlarından geçirilmelidir.

Şimdi, tüm bunları bir müşteri olarak koordine etmeniz gerektiğini hayal edin. Asla kağıt havlu sipariş etmezsiniz çünkü bu çok karmaşık ve zaman alıcıdır ve yapacak daha iyi işleriniz vardır. Neyse ki, tüm çile senden soyutlandı. Bu kağıt havluları kapınızın önünde gösteren uzun, birbirine bağlı bir bilgisayar sistemleri zinciri ve insan süreçleri var, ancak tek düşünmeniz gereken bir düğmeye basmak.

Programcılar için API'ler budur. Çok büyük miktarda karmaşıklık alırlar ve hepsini kendiniz yapmak yerine kullanabileceğiniz nispeten basit bir etkileşim kümesi tanımlarlar. Herhangi bir yazılım projesinde, doğrudan yüzlerce olmasa da onlarca API kullanıyorsunuzdur ve bu API'lerin her biri diğer API'lere vb. Dayanır.

Genel API'ler ve API entegrasyonu

API'ler, bilgisayar programlamasında uzun süredir devam eden bir kavramdır ve yıllardır geliştiricilerin araç setlerinin bir parçası olmuştur. Geleneksel olarak, API'ler aynı makinede çalışan kod bileşenlerini bağlamak için kullanılırdı. Her yerde bulunan ağ iletişiminin yükselişiyle birlikte , bazen açık API olarak adlandırılan daha fazla genel API kullanılabilir hale geldi. Genel API'ler dışa dönüktür ve İnternet üzerinden erişilebilir durumdadır, bu da diğer satıcıların çevrimiçi kodlarıyla etkileşime giren kod yazmanıza olanak tanır; bu süreç API entegrasyonu olarak bilinir .

Bu tür kod karışımları, kullanıcıların farklı satıcılardan gelen işlevleri kendi sistemlerinde karıştırmasına ve eşleştirmesine olanak tanır. Örneğin, pazarlama otomasyon yazılımı Marketo kullanıyorsanız, verilerinizi orada Salesforce CRM işlevselliğiyle senkronize edebilirsiniz.

Bu bağlamda "açık" veya "halka açık", "ücretsiz" olarak yorumlanmamalıdır. Bunun çalışması için yine de Marketo ve Salesforce müşterisi olmanız gerekir. Ancak bu API'lerin kullanılabilirliği, entegrasyonu aksi takdirde olacağından çok daha basit bir süreç haline getirir. ( bilmeniz gereken herkese açık API'lerin harika bir listesine sahiptir.)

Web hizmetleri ve API'ler

2000'lerin başından itibaren w eb hizmetleri terimini hatırlayabilir ve açık bir API fikrinin oldukça benzer olduğunu düşünebilirsiniz. Aslında, bir web hizmeti, bir XML değişkeni olan Web Hizmetleri Açıklama Dili'nde (WSDL) belirtilmeleri de dahil olmak üzere oldukça katı bir dizi özelliği karşılayan belirli bir açık API türüdür.

Web hizmetleri, hizmet odaklı mimarinin (SOA) bir parçası olarak kullanılmak üzere tasarlandı. Nordic APIs blogunun açıkladığı gibi, SOA'lar hiçbir zaman potansiyellerini tam olarak karşılayamadıkları için bu, web hizmetlerine kötü bir isim verdi. Hizmetten hizmete iletişim için kullanılan tekniklerdeki ilerlemeler - özellikle daha hafif, daha esnek REST - genel API dünyasında web hizmetlerini de biraz geride bırakmıştır.

REST API'leri

Web hizmetleri orijinal olarak, HTTP üzerinden XML belgeleri gönderen bir mesajlaşma protokolü olan SOAP (Basit Nesne Erişim Protokolü) kullanılarak iletişim kurmak için tasarlanmıştır. Ancak günümüzde çoğu web tabanlı API, mimari bir stil olarak REST — Temsili Durum Aktarımı — kullanmaktadır.

REST, Roy Fielding tarafından 2000 yılında doktora tezinde resmi olarak tanıtıldı. Bu, her türden medyayı (metin, video, vb.) İçeren dağıtılmış sistemler oluşturmak için kullanılan bir dizi mimari bileşen, tasarım ilkesi ve etkileşimlerdir. Temelde, REST, genel amaçlı bileşenleri kolayca oluşturmak için gerekli yapıyı sağlarken, web üzerinde esnek iletişim ve bilgilerin görüntülenmesine izin veren bir yapı sistemleri tarzıdır.

Bir REST API'de bir kaynak hemen hemen her şey olabilir, ancak örnekler arasında bir kullanıcı, bir tweet listesi ve bir tweet aramasının mevcut sonuçları yer alır. Bu kaynakların her biri, bir kaynak tanımlayıcısında adreslenebilir ve bu , web tabanlı REST API'leri durumunda genellikle //api.twitter.com/1.1/users/show?screen_name=twitterdev gibi bir URL'dir. Bir uygulama, tanımlayıcıyı kullanarak bir kaynak talep ettiğinde, API, söz konusu kaynağın mevcut temsilini uygulamanın kullanabileceği bir formatta (örneğin JPEG görüntüsü, HTML sayfası veya JSON) uygulamaya iletir .

REST'in en büyük farklarından biri, talep eden uygulamaya veri göndermeyi içermesidir. Bu, uygulamanın verilerle istediği her şeyi yapmasına olanak tanıyan büyük bir esneklik sağlarken, verimlilik maliyetine sahiptir. Verilerin işlenmek üzere web üzerinden gönderilmesi, verilerin bulunduğu yerde işleme yapmaya ve ardından sonuçları göndermeye kıyasla oldukça yavaştır.

Elbette, "verimli" yaklaşımdaki sorun, verileri barındıran sistemlerin, bununla ne yapmak istediğini önceden bilmek zorunda olmasıdır. Bu nedenle, genel amaçlı kullanılabilirlik ve esnekliğe sahip bir API oluşturmak için REST, gidilecek yoldur.

API örnekleri

Birçoğu endüstri devlerinden olmak üzere, etkileşimde bulunabileceğiniz çok sayıda genel API var. Bazı platform şirketlerinin kodlarına bir API aracılığıyla programlı olarak erişme yeteneği, aslında onları bir platform yapan şeydir. Bazı önemli API örnekleri şunları içerir:

  • Kodunuzu Haritalar'dan Çeviri'ye kadar tüm Google hizmetlerine bağlamanıza olanak tanıyan Google API'leri . API'ler Google için o kadar önemlidir ki, önde gelen bir API yönetim platformu olan Apigee'yi satın aldılar.
  • Facebook'un sosyal grafiğine ve pazarlama araçlarına programlı olarak erişmenizi sağlayan Facebook API'leri . (Şirket, Cambridge Analytica ve diğer skandallardan gelen sonuçta bu API'ler aracılığıyla hangi kullanıcı verilerine erişebileceğinizi kısıtlıyor.)

API'lerin nasıl çalıştığını gerçekten anlamak için ikiye derinlemesine bakalım: Java geliştiricilerinin Java platformuyla etkileşimde bulunmak için kullandıkları Java API ve sosyal medya ile etkileşimde bulunmak için kullanabileceğiniz genel bir API olan Twitter API ağ hizmeti.

Java API

Java API, Java Geliştirme Kitini kuran herkesin "kutudan çıktığı gibi" erişebileceği bir yazılım bileşenleri kitaplığıdır. Bu bileşenler ortak görevleri uygular ve genellikle üretkenliği artırır, çünkü programcıların her seferinde sıfırdan başlaması gerekmez. Yazılımda kullanılan temel bileşenlerden biri, tahmin edebileceğiniz gibi, bir öğe listesinin kaydını tutan Liste adı verilen bir şeydir. Java API, bir Listeyle neler yapabileceğinizi tanımlar : öğe ekleme, listeyi sıralama, bir öğenin listede olup olmadığını belirleme, vb. Ayrıca bu eylemlerin nasıl gerçekleştirileceğini de belirtir . Listeyi sıralamak için, Listenin nasıl sıralanmasını istediğinizi belirtmeniz gerekir: alfabetik olarak, sayısal olarak azalan, en parlaktan en mat renge, vb.

Twitter API

Twitter API'si, geliştiricilerin Twitter verileriyle programlama yoluyla etkileşim kurmasına olanak tanıyan web tabanlı bir JSON API'sidir. Java Geliştirme Kitine dahil olan Java API'sinin aksine Twitter API, web tabanlı bir API'dir. Twitter'ın barındırdığı hizmetlere İnternet üzerinden talepler yapılarak erişilmelidir.

Twitter gibi web tabanlı bir API ile uygulamanız, tıpkı bir web tarayıcısının yaptığı gibi bir HTTP isteği gönderir. Ancak yanıt, bir web sayfası olarak sunulmak yerine, insan anlayışı için, uygulamaların kolayca ayrıştırabileceği bir biçimde döndürülür. Bu amaç için çeşitli formatlar mevcuttur ve Twitter, JSON adı verilen popüler ve kullanımı kolay bir format kullanır. (JSON'a aşina değilseniz, birkaç dakikanızı burada okumak isteyebilirsiniz.)

Twitter'daki temel unsurlardan biri tweet'tir. Twitter API'si tweet'lerle neler yapabileceğinizi söyler : tweet arayın, tweet oluşturun, tweet'i favorilerinize ekleyin. Ayrıca bu eylemleri nasıl gerçekleştireceğinizi de anlatır . Tweet aramak için arama kriterlerinizi belirtmeniz gerekir: aranacak terimler veya hashtagler, coğrafi konum, dil vb.

API tasarımı

API tasarımı, bir API'nin "ne" ve "nasıl" özelliklerinin formüle edildiği süreçtir. Oluşturulabilecek diğer her şeyde olduğu gibi, API tasarımına farklı düzeylerde düşünce ve özen gösterilerek farklı API kalitesi seviyeleri elde edilir. İyi tasarlanmış API'ler tutarlı davranışa sahiptir, bağlamlarını hesaba katar ve kullanıcılarının ihtiyaçlarını göz önünde bulundurur.

Bir API içindeki tutarlı davranış, öğrenilme hızını ve programcıların onu kullanırken hata yapma olasılığını büyük ölçüde etkiler. Genel olarak, benzer eylemler gerçekleştiren API'ler, teknik farklılıklarına bakılmaksızın benzer şekilde davranmalıdır. Tutarsız bir API örneği için, Java'da bir Listeye öğe eklemenin iki yoluna bakalım:

Bir listeye öğe eklemenin iki yöntemi aynı şeyi yapsa da, dönüş türleri (boole ve void) farklıdır. Bu API'yi kullanan geliştiriciler artık hangi yöntemin hangi türü döndürdüğünü takip etmelidir, bu da API'nin öğrenilmesini zorlaştırır ve kullanımını hataya daha yatkın hale getirir. Ayrıca, bu yöntemleri kullanan kodun daha az esnek hale geldiği anlamına da gelir, çünkü öğe ekleme şeklinizi değiştirmek istiyorsanız değişmesi gerekir.

Bağlamı hesaba katmak, API dışındaki faktörlerle ilgili olmasına rağmen, başka bir tutarlılık biçimidir. Bunun harika, yazılım dışı bir örneği, yol kuralının - sağdan trafik veya soldan trafik - farklı ülkeler için otomobil tasarımlarını nasıl etkilediğidir. Araba tasarımcıları, sürücü koltuğunu aracın sağ veya sol tarafına yerleştirirken bu çevresel faktörleri dikkate alır.