2 min read

Every website is an API

Na mých školeních účastníkům vysvětluji, že každá webová stránka je v širším slova smyslu webové API. Definice API je obecně taková, že:

API (Application Programming Interface) je rozhraní pro programování aplikací. Jedná se často o třídy nebo metody, které jsou volány různým způsobem.

Můžeme zavolat metodu v rámci jednoho programu, můžeme použít různé proprietární protokoly nebo též protokol HTTP, který umožňuje získat data ze serveru. HTTP standard popisuje princip Content-Negotiation, který připouští vrácení dat ze serveru v různých datových formátech. Klient tedy může požádat o vrácení stránky v podobě HTML, XML, JSON nebo v jiném formátu. Server samozřejmě daný formát musí podporovat.

Bylo by nefér tvrdit, že požadavek klienta:

Host miroslavholec.cz
Accept text/html
GET /

je webová stránka, zatímco požadavek:

Host miroslavholec.cz
Accept application/json
GET /

už je API. Vývojáři sice mají tendenci označovat za API pouze to, co umožňuje efektivní výměnu dat, ovšem HTML z této definice nemůžeme vyloučit. Koneckonců samotné HTML není nic jiného než XML, jehož značky mají specifický sémantický význam.

RESTful Web / RESTful API

Z podstaty věci pak ztrácí pojem REST význam, protože v původní Fieldingově podobě jej aplikujeme univerzálně na web a tudíž i na API. Zpětně bychom mohli chtít aplikovat běžně uznávané API konvence i na prostředí "běžného webu" a ten by z podstaty tyto konvence měl také dodržovat.

V praxi to tak ale není. Dobrým příkladem je verzování. Zatímco u API vyžadujeme souběh několika verzí kvůli existujícím integracím, u webu to není obvykle žádoucí. Z pohledu RESTu zpřístupňujeme jeden resource ve více podobách (více URL) a porušujeme tím do jisté míry uniformitu rozhraní. Verzování není RESTful.

Pojem REST API je v současné době do značné míry upraven představám vývojářů a přidává řadu konvencí, které nejsou žádným způsobem standardizovány. Tyto konvence vznikly historicky zejména na základě knihy Leonarda Richardsona.

Z pohledu standardů

REST se aplikuje na prostředí webu obecně. Konvence a pravidla pro návrh API jsou jiná kapitola, která nemá s REST nic společného. I chaotické API může být RESTful.

Praxe a pohled vývojářů

Vedle webových aplikací existují REST API. REST znamená sadu konvencí a pravidel, která určují konečnou podobu API a jasně navrhují řešení běžných výzev.

Tento nesoulad reality s pohledem vývojářů trvá od nepaměti. Koneckonců REST pro samotný web jsme nikdy nevnímali jako něco specifického, co si zaslouží větší pozornost. Oproti tomu API se stala trendem až v éře Web 2.0. Přívlastek REST dostal šanci získat na popularitě, byť o kvalitě dnešních REST API nic nevypovídá.

Disqus