Programování

Co je API? Vysvětlení aplikačních programovacích rozhraní

API je zkratka pro aplikační programovací rozhraní, koncept, který platí všude od nástrojů příkazového řádku přes podnikový kód Java až po webové aplikace Ruby on Rails. API je způsob programové interakce se samostatnou softwarovou komponentou nebo prostředkem.

Pokud nenapsáte každý řádek kódu úplně od začátku, budete komunikovat s externími softwarovými komponentami, každá s vlastním API. Dokonce i když něco napíšete úplně od začátku, dobře navržená softwarová aplikace bude mít interní rozhraní API, která vám pomohou uspořádat kód a zajistit opětovné použití komponent. A existuje mnoho veřejných rozhraní API, která vám umožňují využívat funkce vyvinuté jinde na webu.

Co je API?

API je definováno jako specifikace možných interakcí se softwarovou komponentou. Co to přesně znamená? Představte si, že auto bylo softwarovou součástí. Jeho API by obsahovalo informace o co umí - zrychlit, zabrzdit, zapnout rádio atd. Také by obsahovalo informace o jak můžete to donutit dělat ty věci. Chcete-li například zrychlit, položte nohu na plynový pedál a zatlačte.

Rozhraní API nemusí vysvětlovat, co se děje uvnitř motoru, když sešlápnete plynový pedál. Proto, pokud jste se naučili řídit auto se spalovacím motorem, můžete si sadnout za volant elektromobilu, aniž byste se museli učit úplně novou dovednost. The co a jak informace se spojí v API definice, což je abstraktní a oddělené od samotného vozu.

Je třeba mít na paměti, že název některých API se často používá k označení jak specifikace interakcí, tak skutečné softwarové komponenty, se kterou komunikujete. Fráze „Twitter API“ například neodkazuje pouze na soubor pravidel pro programovou interakci s Twitterem, ale obecně je chápána jako věc, se kterou komunikujete, jako v „Děláme analýzu tweetů, které jsme dostali od Twitter API. “

API jako abstrakční vrstva

Pokud jde o software, API jsou doslova všude. API jdou ruku v ruce s jedním z nejzákladnějších konceptů v počítačové vědě: abstrakce. Abstrakce je jen způsob organizace složitosti systému, takže složité akce lze řešit jednoduchým způsobem. Přemýšlejte o této abstrakci, jako o těch Amazon Dash Buttons, bateriových deskách s tlačítkovými obvody, které můžete použít k objednání sponek z Amazonu. Takto vypadají:

Objednáte si Dash Button od Amazonu a pomocí aplikace na svém smartphonu jej spojíte s vaší sítí Wi-Fi, vaším účtem Amazon a produktem, řekněme, s vaší oblíbenou značkou papírových ručníků. Pak, kdykoli chcete objednat více papírových ručníků, stačí stisknout tlačítko. Tlačítko Dash se připojí k internetu a odešle zprávu o zadání objednávky na váš účet. O několik dní později dorazí k vašim dveřím papírové ručníky.

Stejně jako API je Dash Button blaženě jednoduché rozhraní, které v zákrytu skrývá všechny druhy složitosti. ID produktu, který jste si objednali, je třeba načíst z nějaké databáze. Vaše doručovací adresa musí být získána z vašeho účtu. Musí být určeno nejbližší středisko plnění vašich papírových ručníků, poté oznámeno, že odstraní položku z dostupné zásoby a zabalí ji. Nakonec musí být balíček směrován přes nějakou kombinaci letadel, nákladních automobilů a dodávek spolu s dalšími balíčky způsobem, který zajistí, že všechny balíčky dorazí na místo určení efektivně.

Nyní si představte, že musíte všechny tyto věci koordinovat jako zákazník. Nikdy si neobjednáte papírové ručníky, protože je to příliš komplikované a časově náročné a máte co dělat lépe. Naštěstí je celá zkouška od vás vzdálena. Existuje dlouhý, vzájemně propojený řetězec počítačových systémů a lidských procesů, díky nimž se tyto papírové ručníky objevují na dosah ruky, ale vše, na co musíte myslet, je stisknutí tlačítka.

Takto vypadají API pro programátory. Berou ohromnou míru složitosti a definují relativně jednoduchou sadu interakcí, které můžete využít místo toho, abyste to dělali sami. V jakémkoli softwarovém projektu pravděpodobně používáte přímo desítky, ne-li stovky API, a každé z těchto API se spoléhá na jiná API atd.

Veřejné API a integrace API

API jsou v počítačovém programování dlouhodobým konceptem a jsou již roky součástí sady nástrojů pro vývojáře. K připojení komponent kódu běžících na stejném stroji se tradičně používala rozhraní API. Se vzestupem všudypřítomných sítí stále více veřejné API, někdy volal otevřené API, jsou k dispozici. Veřejná rozhraní API směřují ven a jsou přístupná přes internet, což vám umožňuje psát kód, který interaguje s kódem jiných dodavatelů online; tento proces je znám jako Integrace API.

Tyto druhy mashupů kódu umožňují uživatelům kombinovat funkce od různých dodavatelů v jejich vlastních systémech. Například pokud používáte software pro marketingovou automatizaci Marketo, můžete tam synchronizovat svá data s funkcí Salesforce CRM.

„Otevřený“ nebo „veřejný“ by v této souvislosti neměl být vykládán ve smyslu „bezplatně“. Aby to fungovalo, musíte být stále zákazníkem Marketo a Salesforce. Díky dostupnosti těchto API je však integrace mnohem jednodušší proces, než by tomu bylo jinak. ( má skvělý seznam veřejných API, o kterých byste měli vědět.)

Webové služby a API

Možná si vybavíte výraz web služby od počátku 90. let a myslíte si, že myšlenka otevřeného API zní docela podobně. Ve skutečnosti je webová služba specifickým druhem otevřeného rozhraní API, které splňuje poměrně přísnou sadu specifikací, včetně toho, že jsou specifikovány ve Web Services Description Language (WSDL), variantě XML.

Webové služby měly být používány jako součást architektury orientované na služby (SOA). Jak vysvětluje blog Nordic APIs, to dalo webovým službám něco špatného, ​​protože SOA nikdy plně nevyužily svůj potenciál. Pokroky v technikách používaných pro komunikaci mezi službami - zejména lehčí a flexibilnější REST - také zanechaly webové služby ve světě veřejných API poněkud pozadu.

Rozhraní REST API

Webové služby byly původně navrženy pro komunikaci pomocí protokolu SOAP (Simple Object Access Protocol), protokolu zasílání zpráv, který odesílá dokumenty XML přes HTTP. Dnes však většina webových rozhraní API používá REST - Reprezentativní přenos stavu - jako architektonický styl.

REST formálně představil Roy Fielding ve své disertační práci v roce 2000. Jedná se o soubor architektonických komponent, konstrukčních principů a interakcí používaných při budování distribuovaných systémů zahrnujících média jakéhokoli druhu (text, video atd.). REST je jádrem stylu stavebních systémů, které umožňují flexibilní komunikaci a zobrazování informací na webu a zároveň poskytují strukturu nezbytnou pro snadné vytváření obecných komponent.

V rozhraní REST API a zdroj může to být skoro všechno, ale příklady zahrnují uživatele, seznam tweetů a aktuální výsledky hledání tweetů. Každý z těchto zdrojů je adresovatelný na adrese a identifikátor zdroje, což je v případě webových rozhraní REST API obvykle adresa URL, například //api.twitter.com/1.1/users/show?screen_name=twitterdev. Když aplikace požaduje prostředek pomocí identifikátoru, rozhraní API doručí aktuální zastoupení tohoto prostředku do aplikace ve formátu, který aplikace může spotřebovat, jako je obrázek JPEG, stránka HTML nebo JSON.

Jedním z velkých rozdílů REST je, že zahrnuje odesílání dat do žádající aplikace. I když to poskytuje velkou flexibilitu, která umožňuje aplikaci s daty dělat, co chce, přichází za cenu efektivity. Odesílání dat přes web ke zpracování je poměrně pomalé ve srovnání se zpracováním, kde se data nacházejí, a následným odesláním výsledků.

Problémem „efektivního“ přístupu je samozřejmě to, že systémy hostující data by předem potřebovaly vědět, co s nimi chtějí aplikace dělat. Aby bylo možné vytvořit rozhraní API, které má obecnou použitelnost a flexibilitu, je cestou REST.

Příklady API

Existuje spousta veřejných API, se kterými můžete komunikovat, mnoho z průmyslových monster. Schopnost programového přístupu k kódu společnosti některé platformy prostřednictvím API je v podstatě to, co z nich dělá platformu. Některé prominentní příklady API zahrnují:

  • Google API, které vám umožní připojit váš kód k celé řadě služeb Google, od Map po Překladač. API jsou pro Google tak důležitá, že získali Apigee, přední platformu pro správu API.
  • Facebook API, které vám umožňují programově přistupovat k sociálnímu grafu a marketingovým nástrojům Facebooku. (Společnost omezuje, k jakým uživatelským datům máte přístup prostřednictvím těchto API ve spadu z Cambridge Analytica a dalších skandálů.)

Abychom skutečně získali představu o tom, jak API fungují, pojďme se hlouběji ponořit do dvou: Java API, které vývojáři Java používají k interakci s platformou Java, a Twitter API, veřejné API, které byste používali k interakci se sociálními síťová služba.

Rozhraní Java API

Java API je knihovna softwarových komponent, která je k dispozici „ihned po vybalení“ každému, kdo si nainstaloval sadu Java Development Kit. Tyto komponenty implementují běžné úkoly a obecně zvyšují produktivitu, protože programátoři nemusí vždy začínat od nuly. Jednou ze základních komponent používaných v softwaru je něco, co se nazývá Seznam, který, jak můžete očekávat, sleduje seznam položek. Definuje rozhraní Java API co můžete dělat se seznamem: přidávat položky, třídit seznam, určovat, zda je položka v seznamu atd. Také specifikuje jak provádět tyto akce. Chcete-li seřadit seznam, je třeba určit, jak chcete seznam seřadit: abecedně, číselně sestupně, nejjasnější až nejslabší barvu atd.

Twitter API

Twitter API je webové rozhraní JSON API, které umožňuje vývojářům programově interagovat s daty Twitteru. Na rozdíl od Java API, které je součástí sady Java Development Kit, je Twitter API webovým API. Musí k němu být přistupováno prostřednictvím požadavků na internet ke službám, které Twitter hostí.

Díky webovému rozhraní API, jako je Twitter, vaše aplikace odešle požadavek HTTP, stejně jako webový prohlížeč. Ale místo toho, aby byla odpověď poskytována jako webová stránka, je pro lidské porozumění vrácena ve formátu, který aplikace mohou snadno analyzovat. Pro tento účel existují různé formáty a Twitter používá populární a snadno použitelný formát zvaný JSON. (Pokud nejste obeznámeni s JSON, možná budete chtít strávit několik minut jeho čtením zde.)

Jedním ze základních prvků na Twitteru je tweet. Rozhraní Twitter API vám to řekne co můžete dělat s tweety: hledat tweety, vytvářet tweety, oblíbené tweety. Také vám to říká jak provádět tyto akce. Chcete-li hledat tweety, musíte zadat kritéria vyhledávání: hledané výrazy nebo hashtagy, geolokace, jazyk atd.

Návrh API

Návrh API je proces, při kterém jsou formulovány „co“ a „jak“ API. Stejně jako u čehokoli jiného, ​​co lze vytvořit, jsou do designu API vloženy různé úrovně myšlení a péče, což má za následek různé úrovně kvality API. Dobře navržená rozhraní API mají konzistentní chování, berou v úvahu jejich kontext a pamatují na potřeby svých uživatelů.

Konzistentní chování v rámci API výrazně ovlivňuje rychlost, kterou se lze naučit, a pravděpodobnost, že programátoři při jeho používání udělají chyby. Obecně by se API, která provádějí podobné akce, měla chovat podobně, bez ohledu na jejich technické rozdíly. Příklad nekonzistentního API se podívejme na dva způsoby přidání položky do seznamu v Javě:

I když dvě metody přidávání položek do seznamu dělají totéž, jejich návratové typy (boolean a void) se liší. Vývojáři používající toto API nyní musí sledovat, která metoda vrací jaký typ, což ztěžuje učení API a jeho používání je náchylnější k chybám. To také znamená, že kód, který používá tyto metody, se stává méně pružným, protože se musí změnit, pokud chcete přepnout způsob, jakým přidáváte prvky.

Vezmeme-li v úvahu kontext, je to další forma konzistence, i když to má co do činění s vnějšími faktory API. Skvělým příkladem, který není softwarový, je to, jak pravidlo silničního provozu - pravostranný nebo levostranný provoz - ovlivňuje design automobilů pro různé země. Konstruktéři automobilů berou tento faktor prostředí v úvahu při umístění sedadla řidiče na pravé nebo levé straně vozu.

$config[zx-auto] not found$config[zx-overlay] not found