API

API (zkratka pro application programming interface) označuje v informatice rozhraní pro programová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 nebo jádra operačního systému), které může programátor využívat. API určuje, jakým způsobem jsou funkce knihovny volány ze zdrojového kódu programu. Rozhraní, které se vytváří při kompilaci a 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.

Příklady 
Důležitá jsou například grafická API (OpenGL, DirectX a Vulkan), která jsou standardizována a programátor je 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áno nějakou programovou knihovnou (např. Mesa 3D).

V operačním systému Microsoft Windows se rozlišuje volání knihovních funkcí a systémové volání. V programech se používá jednotné Windows API.

API operačních systémů 
V současné době jsou nejrozšířenější dva standardy API OS: POSIX (IEEE) a Win32 (Microsoft). Rozhraní POSIX bylo vytvořeno pro standardizaci unixových operačních systémů, rozhraní Windows API reprezentuje rozhraní pro systém s mikrojádrem (absence systémových volání).

Vlastnosti 
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:

 obecné – jedná se o úplný soubor rozhraní API, který je zasílán v knihovnách programovacího jazyka (např. Standard Template Library v C ++ nebo Java API)
 konkrétní – chce řešit konkrétní problémy, jako jsou Mapy Google nebo Java API for XML Web Services

 jazykově závislé – to znamená, že je k dispozici pouze v daném programovacím jazyce, pomocí syntaxí a základních prvků tohoto jazyka, aby API bylo vhodné pro použití v této souvislosti
 jazykově nezávislé – to znamená, že lze volat z několika programovacích jazyků, což je žádoucí vlastnost pro službu orientovanou v API, která není vázána na daný proces nebo systém, a může být poskytnuta jako RPC nebo Webová služba

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.

Web API 

Při použití v kontextu vývoje webu je API typicky definováno HTTP a požaduje zprávy spolu s definicí struktury odpovědí obvykle v XML nebo JSON formátu. Zatímco „Web API“ je prakticky synonymem pro Webovou službu, nedávný trend (tak zvaný Web 2.0) se vzdaluje od Simple Object Access Protocol, služby založené na více přímých REST stylů komunikace. Web API umožňují kombinaci různých služeb do nových aplikací známých jako mashups.

Implementace 
Standard POSIX definuje 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 (typicky unixové systémy – Linux, Mac OS X, různé BSD systé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řenositelnost je 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.

Microsoft pro vytvoření zpětné kompatibility Windows 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“.

Mezi unixovými operač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éna IBM 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 platformu Linux a BSD (FreeBSD, NetBSD, OpenBSD), který by mohl zaručit různé úrovně kompatibility API a zajistit zpě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).

Popis API v unixovém systému 
API popisuje, jak se daná funkce volá a co provede (resp. co vrátí jako výsledek). V unixových systémech popisuje hlavičkový soubor math.h definice matematických funkcí, které jsou k dispozici v knihovně libm pro programovací 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říklad manuálová stránka pro funkci sqrt() (dostupná například příkazem man 3 sqrt) popisuje funkci takto (zkráceno):

 SYNTAXE
       #include <math.h>
       double sqrt (double x);
       float sqrtf (float X);
 
 POPIS
       Funkce sqrt() vypočítá druhou odmocninu z argumentu.
 
 NÁVRATOVÝ KÓD
       Při úspěšném výpočtu je vrácena druhá odmocnina (jestliže X je reálné a kladné).

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.

API v objektově-orientovaném jazyce 
 
V objektově 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 o třídy metod.

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ě metody push() (přidat nové položky do zásobníku), a pop()(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ě metody pop() a push(), 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 jazyk Java API 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, v objektově 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ě JDK používaný vývojáři k vytváření nových Java programů. JDK obsahuje dokumentaci API v notaci Javadoc. Kvalita dokumentace k API je často určujícím faktorem jeho úspěchu, pokud jde o snadnost použití.

Odkazy

Reference

Související články 
 Rozhraní
 Knihovna
 ABI (application binary interface)
 Google Web API
 Facebook API

Externí odkazy 
 
 

Rozhraní pro programování aplikací
Programové knihovny
Rozhraní