Web uygulamalarında API nedir ve neden gereklidir? API nedir? Yeni başlayanlar için basit açıklama

  • 08.09.2019

API, bir programın (modül, kitaplık) sağladığı işlevselliği tanımlarken API, bu işlevselliğin tam olarak nasıl uygulandığından soyutlamanıza izin verir.

Bir program (modül, kitaplık) bir kara kutu olarak kabul edilirse, API, bu kutunun kullanıcısının kullanabileceği ve çevirebileceği ve çekebileceği bir dizi "tutamaç"tır.

Yazılım bileşenleri, API'ler aracılığıyla birbirleriyle etkileşime girer. Bu durumda, bileşenler genellikle bir hiyerarşi oluşturur - yüksek seviyeli bileşenler, düşük seviyeli bileşenlerin API'sini kullanır ve bunlar da daha düşük seviyeli bileşenlerin API'sini kullanır.

Bu prensibe göre, veri iletimi için protokoller . Standart İnternet protokolü (OSI ağ modeli) 7 katman içerir (bit paket iletiminin fiziksel katmanından HTTP ve IMAP gibi uygulama protokolleri katmanına kadar). Her katman, bir önceki veri katmanının işlevselliğinden yararlanır ve sırayla bir sonraki katmana istenen işlevselliği sağlar.

Protokol kavramının anlam olarak API kavramına yakın olduğuna dikkat etmek önemlidir. Her ikisi de işlevsellik soyutlamalarıdır, yalnızca ilk durumda veri aktarımından ve ikincisinde bilgisayar uygulamaları oluşturmaktan bahsediyoruz.

İşlev ve sınıf kitaplığı API'si bir açıklama içerir imzalar ve fonksiyon semantiği.

Uygulama Programlama Arayüzü (API), aşağıdakileri yapmanızı sağlayan sistemler arasındaki etkileşim için bir yazılım arayüzüdür:

  • Kurumsal iş hizmetlerine erişin
  • Sistemler ve uygulamalar arasında bilgi alışverişi
  • Şirketler, ortaklar, geliştiriciler ve müşteriler arasındaki iletişimi basitleştirin

API stratejisini aç

API stratejisi şunları içerir:

  • Mevcut API'lere dayalı iş ürünlerinin geliştirilmesi
  • Geliştiricilere dahili hizmetler sağlamak
  • Çok kanallı etkileşim oluşturmak ve karı artırmak için API para kazanma modelleri

Açık API konseptinin uygulanması, bir işletmenin dönüştürülmesine, onu piyasa oyuncularından oluşan esnek bir proje ekosistemine yerleştirmeye, sürekli yeni fikirler üretme koşulları yaratmaya ve kurumsal veri dizilerini yönetirken ek değer yaratmaya yardımcı olur.

Entegrasyon çözümleri pazarı, API'lerin evrimi bağlamında gelişiyor - EDI ve SOAP'tan genel API'ler çağını başlatan Web 2.0'a. Önümüzdeki 3 yıl içinde bu tür arayüzlerin sayısı 50 kattan fazla artarak 1 milyona ulaşabilir. Bunun nedeni çok kanallı: müşterilerle etkileşim kanalları da onlarla birlikte değişmelidir. Tüketici sayısındaki ve veri hacmindeki sürekli büyüme, kurumsal varlıkları ve hizmetleri kullanmak için açık arayüzlere dayalı yenilikçi iş modelleri oluşturmaya yardımcı olan API ekonomisinin ortaya çıkmasına neden oldu.

İşlev imzası

İşlev imzası- işlevin genel beyanının bir parçası olup, çeviri araçlarının işlevi diğerleri arasında tanımlamasına izin verir. Farklı programlama dilleri, bir fonksiyonun imzası hakkında farklı fikirlere sahiptir, bu da bu dillerde fonksiyon aşırı yükleme olasılıkları ile yakından ilgilidir.

Bazen ayırt ederler çağrı imzası ve uygulama imzası fonksiyonlar. Çağrı imzası genellikle bir fonksiyon çağrısının sözdizimsel yapısına göre derlenir ve bu fonksiyonun kapsamının imzası, fonksiyonun adı, çağrıdaki gerçek argüman türlerinin sırası ve çağrının tipi dikkate alınır. sonuç. Uygulama imzası genellikle işlev bildiriminin sözdizimsel yapısından bazı öğeleri içerir: işlev kapsamı belirteci, adı ve biçimsel argüman türlerinin sırası.

Örneğin, C++ programlama dilinde, basit bir işlev, derleyici tarafından adı ve bu dilde işlev imzasını oluşturan argüman türlerinin sırası ile benzersiz bir şekilde tanımlanır. Eğer fonksiyon bir sınıfın metodu ise, o zaman sınıfın ismi de imzaya katılır.

Ayrıca, bir programcının aynı sonucu elde etmek için emrinde genellikle birkaç farklı API'ye sahip olduğu da belirtilmelidir. Bu durumda, her API genellikle daha düşük bir soyutlama seviyesindeki yazılım bileşenlerinin API'leri kullanılarak uygulanır.

Örneğin: "Merhaba dünya!" satırını görmek için tüm yapmanız gereken, minimum başlık ve verilen dizeyi içeren basit bir gövdeye sahip bir HTML belgesi oluşturmak. Tarayıcı bu belgeyi açtığında ne olur? Tarayıcı programı, dosya adını (veya zaten açık bir dosya tanımlayıcısını) HTML belgelerini işleyen kitaplığa iletir, bu da işletim sistemi API'sini kullanarak bu dosyayı okuyacak ve cihazını anlayacaktır, "temizle" gibi işlemleri çağıracaktır. pencere”, “Seçilen yazı tipinde yaz Merhaba dünya!”, bu işlemler sırasında grafik ilkel kitaplığı uygun isteklerle pencere arabirim kitaplığına dönecek, bu kitaplık zaten “ gibi isteklerle işletim sistemi API'sine dönecektir. beni bu video kartı arabelleğine koy".

Aynı zamanda, neredeyse her seviyede birkaç olası alternatif API vardır. Örneğin: kaynak belgeyi HTML'de değil, LaTeX'te yazabiliriz, görüntülemek için herhangi bir tarayıcı kullanabiliriz. Farklı tarayıcılar genellikle farklı HTML kitaplıkları kullanır ve ayrıca (genellikle) farklı ilkel kitaplıklar ve farklı işletim sistemleri kullanılarak oluşturulabilir.

Mevcut katmanlı API sistemlerinin ana karmaşıklıkları şu şekildedir:

  • Program kodunu bir API sisteminden diğerine taşıma zorluğu (örneğin, işletim sistemini değiştirirken);
  • Daha düşük bir seviyeden daha yüksek bir seviyeye geçerken işlevsellik kaybı. Kabaca söylemek gerekirse, API'nin her "katmanı", bazı standart işlem setlerinin uygulanmasını kolaylaştırmak için oluşturulur. Ancak aynı zamanda, daha düşük bir API seviyesinin sağladığı diğer bazı işlemleri gerçekleştirmek gerçekten zorlaşıyor veya temelde imkansız hale geliyor.

Temel API Türleri

Dahili API'ler

  • API erişimi, dahili geliştiricilerle sınırlıdır
  • Uygulamalar işletmenin çalışanlarına yöneliktir

İşletmeye yön veren:

  • Geliştirme Tutarlılığı
  • Maliyet azaltma
  • Geliştirme Verimliliğini Artırma

İş Ortağı API'leri

  • API'ler yalnızca sınırlı sayıda iş ortağı tarafından kullanılabilir
  • Son tüketiciler ve iş kullanıcıları için tasarlanmış uygulamalar

İşletmeye yön veren:

  • Geliştirme sürecinin otomasyonu
  • Ortaklıkların geliştirilmesi
  • Ortaklarla etkileşim sürecinin optimizasyonu

Genel API'ler

Herhangi bir harici geliştiriciye erişim verilir Uygulamalar son kullanıcılara yöneliktir

İşletmeye yön veren:

  • Yeni hizmetlerin geliştirilmesi
  • Ekosistem geliştirme
  • Çok kanallı etkileşim

En ünlü API'ler

İşletim sistemi API'leri

GUI API'leri

  • Direct3D (DirectX'in bir parçası)
  • DirectDraw (DirectX'in bir parçası)

Bu kısa dönem, bir şekilde gelişmeyle karşılaşan herkes tarafından iyi bilinir. Ancak herkes tam olarak ne anlama geldiğini ve neden gerekli olduğunu anlamıyor. geliştirici Peter Gazarov API hakkında blogunda basit kelimelerle bahsetti.

API kısaltması, "Uygulama Programlama Arayüzü" (uygulama programlama arayüzü, uygulama programlama arayüzü) anlamına gelir. Çoğu büyük şirket, belirli bir aşamada, müşteriler veya dahili kullanım için API'ler geliştirir. API'nin geliştirme ve işletmede nasıl ve nasıl kullanıldığını anlamak için önce World Wide Web'in nasıl çalıştığını anlamanız gerekir.

World Wide Web ve uzak sunucular

WWW, her sayfayı depolayan büyük bir bağlantılı sunucular ağı olarak düşünülebilir. Sıradan bir dizüstü bilgisayar, ağdaki tüm siteye hizmet verebilecek bir sunucuya dönüştürülebilir ve geliştiriciler, siteleri çok çeşitli kullanıcılara açmadan önce yerel sunucuları kullanarak siteler oluşturur.

Bir tarayıcının adres çubuğuna yazarken www.facebook.com uzak Facebook sunucusuna karşılık gelen bir istek gönderilir. Tarayıcı yanıtı aldığında, kodu yorumlar ve sayfayı oluşturur.

Bir kullanıcı web'deki bir sayfayı her ziyaret ettiğinde, uzak sunucunun API'si ile etkileşime girer. API, sunucunun istekleri alan ve yanıtlar gönderen kısmıdır.

Müşterilere hizmet etmenin bir yolu olarak API

Birçok şirket API'yi bitmiş bir ürün olarak sunar. Örneğin, Weather Underground, hava durumu verileri API'sine erişim satar.

Kullanım senaryosu: küçük bir şirketin web sitesinde müşteriler için randevu almak için bir form var. Şirket, müşterilere otomatik olarak bir etkinlik oluşturma ve yaklaşan bir toplantının ayrıntılarını doldurma yeteneği vermek için Google Takvim'i buna yerleştirmek istiyor.

API Uygulaması: amaç - site sunucusu, belirtilen ayrıntılarla bir etkinlik oluşturma, Google'dan bir yanıt alma, işleme ve uygun bilgileri tarayıcıya, örneğin kullanıcıya bir onay mesajı iletme isteği ile doğrudan Google sunucusuyla iletişim kurmalıdır. .

Alternatif olarak, tarayıcı, şirketin sunucusunu atlayarak Google sunucu API'sine bir istekte bulunabilir.

Google Takvim API'sinin ağdaki diğer herhangi bir uzak sunucunun API'sinden farkı nedir?

Teknik olarak fark, istek ve yanıt biçimindedir. Eksiksiz bir web sayfası oluşturmak için tarayıcı, HTML biçimlendirme dilinde bir yanıt beklerken, Google Takvim API'si yalnızca JSON gibi bir biçimde verileri döndürür.

API'ye istek şirketin web sitesinin sunucusu tarafından yapılırsa, o zaman müşteridir (tıpkı kullanıcının web sitesini açtığında istemcinin tarayıcı olması gibi).

API sayesinde kullanıcı, şirketin web sitesinden ayrılmadan bir işlem gerçekleştirme fırsatı elde eder.

Çoğu modern web sitesi en az birkaç üçüncü taraf API kullanır. Pek çok görev, bir kitaplık veya hizmet olsun, üçüncü taraf geliştiriciler tarafından sunulan hazır çözümlere sahiptir. Hazır bir çözüme başvurmak genellikle daha kolay ve daha güvenilirdir.

Birçok geliştirici, uygulamayı API'yi kullanarak birbiriyle etkileşime giren birkaç sunucuya dağıtır. Ana uygulama sunucusuna göre yardımcı bir işlev gerçekleştiren sunuculara mikro hizmetler denir.

Bu nedenle, bir şirket kullanıcılarına bir API sunduğunda, yalnızca yanıt olarak veri döndüren bir dizi özel URL oluşturduğu anlamına gelir.

Bu tür istekler genellikle tarayıcı aracılığıyla gönderilebilir. HTTP üzerinden veri aktarımı metin biçiminde olduğundan, tarayıcı her zaman yanıtı görüntüleyebilir. Örneğin, bir tarayıcı aracılığıyla GitHub API'sine (https://api.github.com/users/petrgazarov) ve erişim belirteci olmadan doğrudan erişebilir ve aşağıdaki yanıtı JSON biçiminde alabilirsiniz:

Tarayıcı, koda eklenebilecek mükemmel bir JSON yanıtı görüntüler. Kendi takdirinize bağlı olarak kullanmak için bu tür metinlerden veri çıkarmanız yeterlidir.

Biraz daha API örneği

"Uygulama" (uygulama, uygulama) kelimesi farklı anlamlarda kullanılabilir. API bağlamında, şu anlama gelir:

  • belirli bir işleve sahip yazılım parçası,
  • bir bütün olarak sunucu, bir bütün olarak uygulama veya sadece uygulamanın ayrı bir parçası.

Ortamdan açıkça ayırt edilebilen herhangi bir yazılım parçası, İngilizce kısaltmadaki "A" harfinin yerini alabilir ve ayrıca bir çeşit API'ye sahip olabilir. Örneğin, bir geliştirici koda bir üçüncü taraf kitaplığı uyguladığında, tüm uygulamanın bir parçası haline gelir. Ayrı bir yazılım parçası olan kitaplık, uygulama kodunun geri kalanıyla etkileşime girmesine izin verecek bir tür API'ye sahip olacaktır.

Nesne yönelimli tasarımda kod, bir nesneler topluluğu olarak temsil edilir. Bir uygulamada birbiriyle etkileşime giren bu tür yüzlerce nesne olabilir. Her birinin kendi API'si vardır - bir set halka açık uygulamadaki diğer nesnelerle etkileşim için özellikler ve yöntemler. nesneler de olabilir özel, ortamdan gizlenen ve bir API olmayan dahili mantık.

Microsoft programcıları, meslektaşlarının çalışmalarını kolaylaştırmak ve tüm Windows programları için evrensel bir arayüz sağlamak için API - "Uygulama Programlama Arayüzü" gibi bir şey yarattı.

Bu, programlar tarafından en sık kullanılabilen bir dizi işlev ve prosedürdür: bir dizin ağacını görüntüleme, dosya arama, kapatma, simge durumuna küçültme ve tam ekrana genişletme düğmeleriyle standart bir pencere görüntüleme ve diğerleri. Sonuç olarak, Windows için bir program oluşturan bir geliştiricinin, program penceresini, bir klasör seçmek için bir pencereyi ve diğer benzer temel işlemleri görüntülemek için özel alt rutinler düşünmesi ve geliştirmesi gerekmez - sadece kernel32.dll'den araması gerekir. ya da user32.dll kütüphanelerini içeren fonksiyonlar ve prosedürler API'si, onun ihtiyaç duyduğu fonksiyon ve onun için her şeyi kendisi yapacaktır. Bu tür birçok işlev ve prosedür vardır - yaklaşık 600.

MS-DOS işletim sisteminde API diye bir şey yoktu - bu işletim sistemi için bir program yazmayı üstlenen kişi, başından sonuna kadar bir görüntüyü ekranda göstermenin yollarını düşünmek ve uygulamak zorunda kaldı, kullanıcıdan veri alma, dosya sisteminde gezinme, gerekirse grafik çizme 2 . Bu, kullanıcı dostu bir arayüze sahip programlar geliştirme sürecini çok zaman alıcı bir süreç haline getirdi, genellikle program için kabul edilebilir bir grafik arayüz oluşturmak için harcanan zaman ve çaba, programın kendi algoritmasını uygulama maliyetlerini aştı, bunun için oluşturuldu. . Sözde "konsol" uygulamalarının çok yaygın olmasına şaşmamalı, yani arayüz olmadan yalnızca komut satırından çalışan programlar - veriler aynı komut satırına girildi veya içinde belirtilen dosyadan yapıldı ve sonuçların çıktısı düz metin modundaydı.

Windows işletim sisteminin ortaya çıkmasıyla birlikte, programcıların programın görünümünü geliştirmek ve bilgileri girmek ve çıkarmak için uygun yollar geliştirmek için yoğun çalışmaları büyük ölçüde kolaylaştırıldı - zaten Windows 3.0'da API işlevleri kullanıldı. Şimdi bir programcı, örneğin, bir metin giriş penceresi veya bir kaydırma çubuğu oluşturmak isterse, dilin diğer herhangi bir işlevi gibi, yalnızca ihtiyaç duyduğu parametrelerle böyle bir pencerenin görüntüleme işlevine bir çağrı yazması gerekiyordu. kendi programını yazdı ve böyle bir pencereyi veya şeridi yeniden çizen bir program oluşturmak uğruna çok büyük miktarda kod girmemek (bu tür nesneleri de kullanan bir sonraki programı geliştirirken, yeniden yapması gerektiğini kabul ederken). -böyle bir kod geliştirin veya eskisini kısmen kullanmaya çalışın, bu yeni programın ihtiyaçlarına göre uyarlayın). Bu nedenle, API'nin görünümü, programlama teknolojisinde devrim niteliğinde bir atılım yaptı ve bilgi girişi ve çıkışı için standart arayüz nesnelerini programlama gibi rutin ayrıntılar hakkında endişelenmeden, her zamanki uygun arayüzle gerekli programları çok daha hızlı oluşturmanıza izin verdi.

Visual Basic for Applications (VBA) dilinde, program yorumlayıcı tarafından yürütüldüğünde birçok API işlevi ve prosedürü kendileri olarak adlandırılır, bu nedenle metin giriş ve çıkış pencerelerini görüntülemek, üzerinde geometrik şekiller çizmek için bunları kullanmaya kesinlikle gerek yoktur. ekran ve diğer basit eylemler - VBA bunları gerektiği gibi çağırır ve üzerindeki programın bu dilin ilgili işlevlerini kullanması yeterlidir. Bununla birlikte, bazen yerleşik VBA işlevlerinde analog olmayan veya mantıksız veya çok yavaş çalışan bazı eylemlere ihtiyaç duyulur. Örneğin, bir dizin ağacı (Şekil 5.1) veya bir dosya arama programı (VBA işlevlerine benzer - "Application.FileSearch" nesnesi - çok sayıda dosyayla çok yavaş çalışır) görüntüsünü içeren bir klasör seçim penceresi. Bu gibi durumlarda VBA, API işlevlerini çağırma olanağı sağlar.

Ne yazık ki, VBA'da API işlevlerinin kullanımı yardımda belgelenmemiştir, bu nedenle bunların nasıl kullanılacağını öğrenmek için İnternet'te ofis programlama konusunda kitaplar veya kaynaklar aramanız veya API işlevine sahip programların kodunu analiz etmeniz gerekir. aramalar.

Çoğu durumda, Office için programlama yaparken API'yi kullanmadan yapabilirsiniz, ancak bazen yalnızca API işlevini çağırmak istenen sonucu elde edebilir. Diyelim ki Word araç çubuğundaki bir düğmeyi tıkladığınızda ve bu düğmeye ve Shift veya Control tuşuna aynı anda bastığınızda farklı makroların çağrıldığından emin olmanız gerekiyor. İşte bunu yapan bir kod parçası:

İşlev GetAsyncKeyState Lib "user32.dll" (ByVal kState As Long) Tamsayı Olarak Bildirin

GetAsyncKeyState(vbKeyShift Veya vbKeyControl)

GetAsyncKeyState(vbKeyShift) ise

Makro1'i çağırın: Sub'dan çıkın

ElseIf GetAsyncKeyState(vbKeyControl) Sonra

Makro2'yi çağırın: Sub'dan çıkın

İlk satır, bir VBA programında kullanım için bir API işlevini "ayırmak" gibidir. Görüldüğü gibi kütüphaneden (yalnızca başka programlar tarafından kullanılması amaçlanan programları içeren bir dosya) user32.dll adlı GetAsyncKeyState fonksiyonunun çağrıldığı ve bu fonksiyona anahtar numarasının iletildiği ve bir tamsayı (yani, 0, ilgili numaraya sahip tuşa basılmamışsa ve -32767 veya basılmışsa 1). VBA dışı kitaplıklardan çağrılan herhangi bir işlev veya prosedür, Declare komutu kullanılarak rezerve edilmelidir.

Komuttaki vbKeyShift ifadesi, Shift tuş kodunun (değeri 16'dır) yerine geçer ve vbKeyControl, kolayca anlayabileceğiniz gibi, Kontrol tuşu kodunun yerine geçer. "If…Then" yönergelerinin yapısı açık görünüyor 3 , değilse VBA yardımına bakın. Makro adından önceki Çağrı komutu, hatırladığınız gibi, onun başlatılması anlamına gelir.

İnternette API 4'e adanmış Rus siteleri var. Bu özellik seti hakkında daha fazla bilgi edinmek için onları ziyaret edin.

Wikipedia'dan tanımı gereği API, harici yazılım ürünlerinde kullanılmak üzere bir uygulama (kütüphane, hizmet) tarafından sağlanan hazır sınıflar, prosedürler, işlevler, yapılar ve sabitler kümesidir. Programcılar tarafından her türlü uygulamayı yazmak için kullanılır.

Ancak Wikipedia'daki pek çok şey birçok insan için anlaşılır olmadığından, bir API'nin ne olduğunu ve genellikle ne için yapıldığını ve nasıl kullanıldığını parmaklarımla açıklamaya çalışacağım.

API'ler tamamen farklıdır, ancak örneğin, bir mağaza ağımızın ve yalnızca bir ortak veritabanımızın olduğu bir durumu seçtim. Bir ortaklık programına sahip olduğunuzu düşünün. Bağlı kuruluş programı şu prensibe göre çalışır: bir kişi ortaklık programına kaydolur ve bir mağaza motoru alır. Ardından bu mağazayı barındırmasına koyabilir ve çalışmaya başlayabilir. Ancak bu mağazadaki tüm veriler veritabanımızdan alınır, yani her bir ortağa değerli veritabanımıza erişim izni vermemiz gerekir. Ne kadar tehlikeli olduğunu hayal edebiliyor musunuz? Sonuçta, tüm ortak mağazaların onunla çalışabilmesi için veritabanına dışarıdan erişim açmamız gerekiyor. Ancak erişim verileri davetsiz misafirlerin eline geçerse ne olur?

API'nin bize yardımcı olacağı yer burasıdır. Veritabanına erişim vermek yerine, ortak mağazaların bilgi alacağı bir API oluşturacağız. Böylece veritabanı ile sadece bizim API scriptimiz çalışacak ve store bu script ile çalışacaktır.

Nasıl çalışır?
Örneğin, bir mağaza API'mize bir istek gönderir
http://ourapi.com/get_books?limit=20
ve API'miz 20 kopyadan oluşan bir kitap listesi döndürmesi gerektiğini anlıyor, çünkü 20'ye eşit limit parametresini geçtik. Komut dosyamız (API) veritabanına bir istekte bulunur, bir kitap listesi alır ve bunları depolamak (aslında, yalnızca görüntüler) belirli bir biçimde. API'nin bilgi döndürme biçimi kesinlikle herhangi bir şey olabilir, asıl şey mağazalarımızın bunu anlamasıdır. JSON, serileştirilmiş bir dizi veya XML olabilir. Artık önemli değil, asıl mesele, prensibi anlamanız.

API'nin anladığı komutlar kümesi size kalmış. Örneğin bizim durumumuzda bunlar kitap listesi alma, kategori listesi alma, popüler kitaplar alma, yeni kitaplar alma gibi komutlar olabilir. Bu nedenle, bir saldırgan API'mize erişebilse bile, yapabileceği tek şey kitapların bir listesini almaktı ve bu, veritabanımız için herhangi bir tehdit oluşturmaz.

Umarım bir API'nin ne olduğunu basit bir örnekle anlatabilmişimdir. Herhangi bir sorunuz varsa, yorumlarda veya forumda onlara sorun; bunları çözmenize yardımcı olmaktan memnuniyet duyarız.