Programovanie

Čo je to API? Vysvetlenie aplikačných programovacích rozhraní

API znamená aplikačné programovacie rozhranie, koncept, ktorý sa uplatňuje všade od nástrojov príkazového riadku cez podnikový kód Java až po webové aplikácie Ruby on Rails. API je spôsob programovej interakcie so samostatným softvérovým komponentom alebo prostriedkom.

Pokiaľ nepíšete každý riadok kódu úplne od začiatku, budete interagovať s externými softvérovými komponentmi, každý s vlastným API. Aj keď niečo napíšete úplne od začiatku, dobre navrhnutá softvérová aplikácia bude mať interné rozhrania API, ktoré vám pomôžu usporiadať kód a zaistiť, aby boli komponenty opakovane použiteľné. Existuje mnoho verejných rozhraní API, ktoré vám umožňujú využívať funkcie vyvinuté inde na webe.

Čo je to API?

API je definované ako špecifikácia možných interakcií so softvérovým komponentom. Čo to presne znamená? No predstavte si, že auto bolo softvérovým komponentom. Jeho API by obsahovalo informácie o čo dokáže - akcelerovať, brzdiť, zapnúť rádio atď. Zahŕňa to tiež informácie o ako mohli by ste to donútiť robiť tieto veci. Napríklad, aby ste zrýchlili, položte nohu na plynový pedál a stlačte.

API nemusí vysvetľovať, čo sa deje vo vnútri motora, keď šliapnete na plynový pedál. Preto, ak ste sa naučili riadiť auto so spaľovacím motorom, môžete si sadnúť za volant elektromobilu bez toho, aby ste sa museli učiť úplne nové zručnosti. The čo a ako informácie sa spoja v API definícia, ktorý je abstraktný a oddelený od samotného automobilu.

Jedna vec, ktorú treba mať na pamäti, je, že názov niektorých API sa často používa ako odkaz na špecifikáciu interakcií, tak aj na skutočný softvérový komponent, s ktorým interagujete. Fráza „Twitter API“ napríklad neodkazuje iba na súbor pravidiel pre programovú interakciu s Twitterom, ale všeobecne sa chápe ako vec, s ktorou interagujete, ako napríklad v časti „Robíme analýzu tweetov, ktoré sme dostali od Twitter API. “

API ako abstrakčná vrstva

Pokiaľ ide o softvér, API sú doslova všade. API idú ruka v ruke s jedným z najzákladnejších konceptov v informatike: abstrakciou. Abstrakcia je iba spôsob organizácie zložitosti systému, aby bolo možné zložité akcie zvládnuť jednoduchým spôsobom. Popremýšľajte o tejto abstrakcii, ako napríklad o tlačidlách Amazon Dash Buttons, tlačidlových doskách s obvodmi ovládaných batériami, ktoré môžete použiť na objednanie sponiek od spoločnosti Amazon. Takto vyzerajú:

Objednáte si Dash Button od Amazonu a pomocou aplikácie na svojom smartfóne ho spojíte s vašou sieťou Wi-Fi, vašim účtom Amazon a produktom, povedzme, s vašou obľúbenou značkou papierových uterákov. Potom, kedykoľvek chcete objednať viac papierových uterákov, stačí stlačiť tlačidlo. Tlačidlo Dash sa pripája na internet a odošle správu o zadaní objednávky do vášho účtu. O niekoľko dní neskôr vám k dverám dorazia papierové uteráky.

Rovnako ako API, aj Dash Button je blažene jednoduché rozhranie, ktoré v zákulisí skrýva všetky druhy zložitosti. ID produktu, ktorý ste si objednali, je potrebné získať z nejakej databázy. Vaša doručovacia adresa musí byť uvedená z vášho účtu. Musí sa určiť najbližšie stredisko plnenia, v ktorom sú vaše papierové uteráky uskladnené, a potom oznámené, aby odstránili položku z dostupnej zásoby a zabalili ju. Nakoniec musí byť balík vedený cez kombináciu lietadiel, nákladných automobilov a dodávkových vozidiel spolu s inými balíkmi spôsobom, ktorý zaručuje, že všetky balíky dorazia na miesto určenia efektívne.

Teraz si predstavte, že ste všetky tieto veci museli koordinovať ako zákazník. Nikdy si neobjednáte papierové utierky, pretože je to príliš komplikované a časovo náročné a máte pred sebou lepšie veci. Našťastie sa celá skúška od vás oddeľuje. Existuje dlhý vzájomne prepojený reťazec počítačových systémov a ľudských procesov, vďaka ktorým sa tieto papierové uteráky objavujú pred vašimi dverami, ale musíte myslieť iba na stlačenie tlačidla.

Takto vyzerajú API pre programátorov. Vyžadujú ohromnú mieru zložitosti a definujú relatívne jednoduchú sadu interakcií, ktoré môžete využiť namiesto toho, aby ste to robili všetko sami. V každom softvérovom projekte pravdepodobne používate priamo desiatky, ak nie stovky rozhraní API, a každé z týchto rozhraní API sa spolieha na iné rozhrania API atď.

Verejné API a integrácia API

API sú dlhodobým konceptom v oblasti počítačového programovania a sú už roky súčasťou vývojových nástrojov. Na pripojenie komponentov kódu bežiacich na rovnakom stroji sa tradične používali API. S nárastom všadeprítomného vytvárania sietí čoraz viac verejné API, niekedy sa volá otvorené API, sa stali dostupnými. Verejné rozhrania API smerujú navonok a sú prístupné cez internet, čo vám umožňuje napísať kód, ktorý interaguje s kódom iného dodávateľa online; tento proces je známy ako Integrácia API.

Tieto druhy kombinácií kódov umožňujú používateľom kombinovať vo svojich vlastných systémoch funkcie od rôznych dodávateľov. Napríklad ak používate softvér na automatizáciu marketingu Marketo, môžete tam synchronizovať svoje údaje s funkciou Salesforce CRM.

Pojmy „otvorené“ alebo „verejné“ by sa v tejto súvislosti nemali vykladať v zmysle „bezplatne“. Aby to fungovalo, musíte byť stále zákazníkom spoločnosti Marketo a Salesforce. Vďaka dostupnosti týchto rozhraní API je však integrácia oveľa jednoduchším procesom, ako by to bolo inak. ( má skvelý zoznam verejných API, o ktorých by ste mali vedieť.)

Webové služby a API

Možno si spomeniete na výraz web služby od začiatku 90. rokov a myslíte si, že myšlienka otvoreného API znie dosť podobne. V skutočnosti je webová služba špecifickým druhom otvoreného rozhrania API, ktoré spĺňa pomerne prísny súbor špecifikácií vrátane toho, že sú špecifikované v jazyku XML Web Services Description Language (WSDL).

Webové služby sa mali používať ako súčasť architektúry orientovanej na služby (SOA). Ako vysvetľuje blog Nordic APIs, vďaka čomu mali webové služby niečo zlé meno, pretože SOA nikdy nevyužili svoj potenciál. Pokrok v technikách používaných pri komunikácii medzi službami - najmä ľahší a flexibilnejší REST - tiež zanechal webové služby vo svete verejných API trochu pozadu.

REST API

Webové služby boli pôvodne navrhnuté na komunikáciu pomocou protokolu SOAP (Simple Object Access Protocol), protokolu zasielania, ktorý odosiela dokumenty XML cez HTTP. V súčasnosti však väčšina webových rozhraní API používa ako architektonický štýl REST - Reprezentačný prenos stavu.

Program REST formálne predstavil Roy Fielding vo svojej dizertačnej práci v roku 2000. Je to súbor architektonických komponentov, princípov návrhu a interakcií používaných pri budovaní distribuovaných systémov, ktoré zahŕňajú médiá akéhokoľvek druhu (text, video atď.). REST je jadrom systému budovania systémov, ktorý umožňuje flexibilnú komunikáciu a zobrazovanie informácií na webe a poskytuje štruktúru potrebnú na ľahké zostavenie komponentov na všeobecné účely.

V rozhraní REST API a zdroj môže byť skoro všetko, ale medzi príklady patrí používateľ, zoznam tweetov a aktuálne výsledky hľadania tweetov. Každý z týchto zdrojov je adresovateľný na adrese a identifikátor zdroja, čo je v prípade webových rozhraní REST API zvyčajne adresa URL, napríklad //api.twitter.com/1.1/users/show?screen_name=twitterdev. Keď aplikácia požaduje prostriedok pomocou identifikátora, rozhranie API doručí aktuálne zastúpenie tohto prostriedku do aplikácie vo formáte, ktorý aplikácia môže spotrebovať, napríklad obrázok JPEG, stránka HTML alebo JSON.

Jedným z veľkých rozdielov REST je, že zahŕňa odosielanie údajov do požadujúcej aplikácie. Aj keď to poskytuje veľkú flexibilitu, ktorá umožňuje aplikácii robiť s údajmi všetko, čo chce, stojí to za cenu efektívnosti. Odosielanie údajov cez web na spracovanie je dosť pomalé v porovnaní so spracovaním, kde sa údaje nachádzajú, a následným odosielaním výsledkov.

Samozrejme, problémom „efektívneho“ prístupu je, že systémy hostiace dáta by vopred potrebovali vedieť, čo s nimi chcú aplikácie robiť. Preto, aby bolo možné vytvoriť API, ktoré má použiteľnosť a flexibilitu na všeobecné účely, je cestou REST.

Príklady API

Existuje veľa verejných rozhraní API, s ktorými môžete komunikovať, veľa od priemyselných monštier. To, čo z nich v podstate robí platformu, je programový prístup k kódu spoločnosti niektorej z platforiem prostredníctvom API. Niektoré prominentné príklady API zahŕňajú:

  • Google API, ktoré vám umožňujú pripojiť váš kód k celej škále služieb Google, od Máp po Prekladač. API sú pre Google také dôležité, že si zaobstarali poprednú platformu pre správu API Apigee.
  • Facebook API, ktoré vám umožňujú programový prístup k sociálnemu grafu a marketingovým nástrojom Facebooku. (Spoločnosť obmedzuje iba to, ku ktorým údajom používateľov môžete prostredníctvom týchto rozhraní API pristupovať pri spádoch z programu Cambridge Analytica a ďalších škandálov.)

Aby sme skutočne získali predstavu o tom, ako fungujú API, urobme si hlboké ponorenie do dvoch: API Java, ktoré vývojári Java používajú na interakciu s platformou Java, a Twitter API, verejné API, ktoré by ste používali na interakciu so sociálnymi sieťami. sieťová služba.

Rozhranie Java API

Java API je knižnica softvérových komponentov, ktorá je k dispozícii „ihneď po vybalení“ pre každého, kto si nainštaloval Java Development Kit. Tieto komponenty implementujú bežné úlohy a všeobecne zvyšujú produktivitu, pretože programátori nemusia zakaždým začínať od nuly. Jednou zo základných súčastí používaných v softvéri je niečo, čo sa nazýva Zoznam, ktorý, ako by ste čakali, sleduje zoznam položiek. Definuje Java API čo môžete robiť so zoznamom: pridávať položky, triediť zoznam, zisťovať, či je položka v zozname atď. Tiež určuje ako vykonávať tieto činnosti. Ak chcete zoznam zoradiť, musíte určiť, ako chcete, aby bol zoznam zoradený: abecedne, číselne zostupne, najjasnejšia až matná farba atď.

Twitter API

Twitter API je webové rozhranie JSON API, ktoré umožňuje vývojárom programovo interagovať s údajmi z Twitteru. Na rozdiel od rozhrania Java API, ktoré je súčasťou sady Java Development Kit, rozhranie Twitter API je webové rozhranie API. Musí sa k nemu pristupovať prostredníctvom požiadaviek na internet pre služby, ktoré hostuje Twitter.

S webovým rozhraním API, ako je napríklad Twitter, vaša aplikácia odošle požiadavku HTTP, rovnako ako webový prehliadač. Ale namiesto toho, aby sa odpoveď poskytovala ako webová stránka, pre ľudské porozumenie sa vracia vo formáte, ktorý aplikácie môžu ľahko analyzovať. Na tento účel existujú rôzne formáty a Twitter používa populárny a ľahko použiteľný formát s názvom JSON. (Ak nie ste oboznámení s JSON, možno budete chcieť stráviť niekoľko minút jeho čítaním tu.)

Jedným zo základných prvkov na Twitteri je tweet. Rozhranie Twitter API vám to povie čo môžete robiť s tweety: hľadať tweety, vytvárať tweety, obľúbené tweety. Tiež ti to hovorí ako vykonávať tieto akcie. Ak chcete hľadať tweety, musíte určiť svoje kritériá vyhľadávania: hľadané výrazy alebo značky hash, geolokácia, jazyk atď.

Dizajn API

Dizajn API je proces, pomocou ktorého sa formulujú „čo“ a „ako“ API. Rovnako ako v prípade všetkého iného, ​​čo je možné vytvoriť, do návrhu rozhrania API sa vkladajú rôzne úrovne premýšľania a starostlivosti, čo vedie k rôznym úrovniam kvality API. Dobre navrhnuté API majú konzistentné správanie, berú do úvahy ich kontext a majú na pamäti potreby svojich používateľov.

Konzistentné správanie v rámci API výrazne ovplyvňuje rýchlosť, akou sa dá naučiť, a pravdepodobnosť chyby programátorov pri jeho používaní. Všeobecne by sa API, ktoré vykonávajú podobné akcie, mali správať podobne, bez ohľadu na ich technické rozdiely. Ako príklad nekonzistentného rozhrania API sa pozrime na dva spôsoby pridania položky do zoznamu v jazyku Java:

Aj keď tieto dve metódy pridávania položiek do zoznamu robia to isté, ich návratové typy (boolean a void) sú odlišné. Vývojári používajúci toto API teraz musia sledovať, ktorá metóda vracia ktorý typ, čo sťažuje učenie API a jeho náchylnosť na chyby. Znamená to tiež, že kód, ktorý používa tieto metódy, sa stáva menej flexibilným, pretože sa musí zmeniť, ak chcete zmeniť spôsob pridávania prvkov.

Zohľadnenie kontextu je ďalšou formou konzistencie, aj keď súvisí s faktormi mimo API. Skvelým príkladom, ktorý nie je softvérový, je to, ako pravidlo cestnej premávky - pravá alebo ľavá premávka - ovplyvňuje dizajny automobilov pre rôzne krajiny. Dizajnéri automobilov zohľadňujú tento faktor životného prostredia pri umiestnení sedadla vodiča na pravej alebo ľavej strane vozidla.

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