API

API(zkratka proapplication programming interface) označuje vinformaticerozhraníproprogramováníaplikací. Tento termín používásoftwarové inženýrství. Jde o sbírku procedur, funkcí, tříd či protokolů nějakéknihovny(ale třeba i jiného programu nebojádra operačního systému), které můžeprogramátorvyužívat. API určuje, jakým způsobem jsou funkce knihovny volány zezdrojového kóduprogramu. Rozhraní, které se vytváří přikompilacia je využíváno při běhu programu, se nazýváABI.
Funkce API jsou programové celky, které programátor používá namísto toho, aby je sám naprogramoval.
Důležitá jsou například grafická API (OpenGL,DirectXaVulkan), která jsou standardizována aprogramátorje může v programu využít. Způsob jejich vykonání pak záleží na konkrétním počítači, na výkonnosti grafické karty, případně může být vykreslování kompletně softwarověemulovánonějakou programovou knihovnou (např.Mesa 3D).
Voperačním systémuMicrosoft Windowsse rozlišuje volání knihovních funkcí asystémové volání. V programech se používá jednotnéWindows API.
V současné době jsou nejrozšířenější dva standardy API OS: POSIX (IEEE) a Win32 (Microsoft). RozhraníPOSIXbylo vytvořeno pro standardizaciunixovýchoperačních systémů, rozhraníWindows APIreprezentuje rozhraní pro systém smikrojádrem(absencesystémových volání).
API je abstrakce, která definuje a popisuje rozhraní pro interakci s řadou funkcí, používaných součástí softwarového systému. Software, který poskytuje funkce popsané API říká, že je implementován v API. API může být:
Například internetová stránka, která uživatelům umožňuje hledání místních restaurací, je schopna si převzít vrstvu z Google Maps, protože Google Maps API to umožňuje. Google Maps API kontroluje, jaké informace třetí síť může chytit, a co lze s nimi udělat. „API“ může být používán k odkazování na kompletní rozhraní, jednu funkci, nebo dokonce na soubor více API poskytovaných organizací. Proto je rozsah výzkumu obvykle určen osobou nebo dokumentem, který sděluje informace.
Při použití v kontextu vývoje webu je API typicky definovánoHTTPa požaduje zprávy spolu s definicí struktury odpovědí obvykle vXMLneboJSONformátu. Zatímco „Web API“ je prakticky synonymem proWebovou službu, nedávný trend (tak zvanýWeb 2.0) se vzdaluje odSimple Object Access Protocol, služby založené na více přímýchRESTstylů komunikace. Web API umožňují kombinaci různých služeb do nových aplikací známých jakomashups.
StandardPOSIXdefinuje API, které pokrývá širokou škálu běžně používaných funkcí a umožňuje je používat na mnoha různých systémech (typickyunixové systémy–Linux,Mac OS X, různéBSDsystémy atd.). Použití toho API však vyžaduje na každé platformě danou aplikaci znovu přeložit (překompilovat). Kompatibilní API však umožňuje naprogramovat jeden zdrojový kód tak, aby beze změn fungoval na libovolném systému implementujícím toto API.Přenositelnostje výhodná jak pro tvůrce software (již existující produkt lze snadno přenést na jinou platformu), tak pro uživatele (mohou instalovat starší software na své novější systémy bez nutnosti zakoupení upgrade), i když to často vyžaduje přenášet i doplňujícíknihovny.
Microsoftpro vytvoření zpětné kompatibilityWindows API(Win32, tj. pro možnost běhu starších aplikací na novějších verzích systému Windows) poskytuje možnost nastavit specifický „režim kompatibility“. Apple zastává v tomto ohledu méně vstřícný postoj, což mu poskytuje větší svobodu při vývoji aplikací za cenu označení starších programů jako „zastaralých“.
Meziunixovýmioperačními systémy existuje mnoho příbuzných, ale navzájem nekompatibilních operačních systémů, přestože běží na společné technické platformě (zejménaIBM PC kompatibilnísystémy). Bylo zde mnoho pokusů o standardizaci API tak, aby výrobci software mohli šířit jedinou binární formu aplikace pro všechny tyto systémy, avšak do dnešního dne se žádný z nich nesetkal s větším úspěchem. Existuje projekt LSB (Linux Standard Base) pro platformuLinuxaBSD(FreeBSD,NetBSD,OpenBSD), který by mohl zaručit různé úrovně kompatibility API a zajistitzpětnou kompatibilitu(pro programy napsané pro starší verze, které běží na novějších distribucích systému) a multiplatformní kompatibilitu (umožňuje spuštění kódu určeného pro jinou platformu bez nutnosti rekompilace).
API popisuje, jak se daná funkce volá a co provede (resp. co vrátí jako výsledek). Vunixovýchsystémech popisujehlavičkový soubormath.hdefinice matematických funkcí, které jsou k dispozici v knihovnělibmproprogramovací jazyk C. Hlavičkový soubor definuje prototypy funkcí, pomocí kterých je nadefinováno, jaké jsou parametry a jaké jsou návratové hodnoty (výsledky). Napříkladmanuálová stránkapro funkcisqrt()(dostupná například příkazemman 3 sqrt) popisuje funkci takto (zkráceno):
Funkce tedy vrací druhou odmocninu kladného desetinného čísla (jednoduché nebo dvojnásobná přesnosti) jako desetinné číslo. API je zde pro jazyk C popsáno v manuálové stránce.
Vobjektově orientovaných jazycích, API obvykle obsahuje popis souboru a definic tříd, a chování spojených s těmito třídami. Chování je soubor pravidel, jak objekt, odvozený z této třídy bude jednat v daných situacích. Tento abstraktní pojem, je spojen se skutečnou exponenciální funkcí, nebo zpřístupněny pro třídy, které jsou prováděny, pokud jde otřídymetod.
API v tomto případě může být chápána jako souhrn všech způsobů veřejných tříd (obvykle nazvaná jako třída rozhraní). To znamená, že API stanoví metody, které zvládají objekty odvozené z definic tříd. Obecněji, jeden může vidět API jako sbírku všech možných objektů, které lze odvodit z definic tříd, a jejich chování. Použití je opět zprostředkováno metodami, ale v tomto výkladu, jsou metody chápány jako technické detaily, jak je implementováno chování.
Například: třída představující zásobník může vystavit veřejně dvě metodypush()(přidat nové položky do zásobníku), apop()(extrahovat poslední položku, v ideálním případě umístěnou na vrcholu zásobníku).
API v tomto případě mohou být vykládány jako dvě metodypop()apush(), nebo obecněji jako představa, že lze používat položky typu zásobníku, který implementuje chování zásobníku (hromada vystavila své top přidat / odebrat prvky).
Tento koncept lze provádět na místě, kde třída rozhraní API nemá metody pro všechno, ale pouze se s nimi asociuje . Například jazykJavaAPI obsahuje rozhraníSerializable, což je rozhraní, které vyžaduje třída, která implementuje její chování v serializovaném módě. To nevyžaduje mít žádné veřejné metody, ale vyžaduje, aby třída měla povolení zastoupení, které lze uložit kdykoliv. To obvykle platí pro všechny třídy containing, které jsou jednoduché a datové a nemají žádnou vazbu na externí zdroje nebo jedno otevřené připojení k souboru, vzdálený systém nebo externí zařízení.
V tomto smyslu, vobjektově orientovaných jazycích, API definuje sadu chování, případně zprostředkovaný soubor třídy metod. V těchto jazycích je API stále distribuována jako knihovna. Například jazyk Java knihoven, zahrnující soubor API, který je poskytovány ve forměJDKpoužívaný vývojáři k vytváření nových Java programů.JDKobsahuje dokumentaci API v notaciJavadoc. Kvalita dokumentace k API je často určujícím faktorem jeho úspěchu, pokud jde o snadnost použití.
V tomto článku byl použitpřekladtextu z článkuApplication programming interfacena anglické Wikipedii.