REST, tedy representational state transfer, je cestou, jak jednoduše vytvořit, přečíst, editovat nebo smazat informace ze severu za pomoci jednoduchých http volání.
REST je architekturou rozhraní, která je navržená pro distribuované prostředí. REST byl navržen a popsán Royem Fieldingem v roce 2000. Na rozdíl od známých XML-RPC nebo SOAP je REST orientován datově a nikoliv procedurálně. Veškeré zdroje mají vlastní URI identifikátor a REST následně definuje čtyři základní metody, které k nim mohou přistupovat.
Koncept RESTu
REST je koncept designu distribuované architektury, která je v tomto smyslu chápána jako architektura, ve které část programu běží na různých strojích a pro jejich komunikaci je využívána síť. Pod takovým programem je možné si představit kupříkladu webovou aplikaci. Tam internetový prohlížeč komunikuje s webovým serverem.
Základní principy RESTu
Chování a stav aplikace je vyjadřován za pomoci takzvaného resource (klíčová abstrakce). Každý z těchto resource musí mít přiřazený unikátní identifikátor, tedy URL nebo URN.
Hypermedia as the Engine of Application State, neboli HATEOAS. To znamená, že stav aplikace je určován za pomoci URL. Další stavy pak můžeme získat přímo z odkazů, které klient dostane v odpovědi poslané serverem.
REST definuje jednotný přístup pro získávání resource a manipulaci s nimi v podobě čtyř operací, tzv. CRUD (Create, Read, Update, Delete).
Resource může být reprezentován různě, například za pomoci XML, HTML, JSON, SVG nebo PDF. Klient pak nepracuje s tímto resource napřímo, ale jen s jeho reprezentací.
Komunikační protokol
Komunikace je rozdělena na klienta a server, což umožňuje oddělení odpovědností. Protokol je bezestavový, je tedy nezbytné aby každý požadavek obsahoval veškeré informace, které jsou potřebné k jeho vykonání.
Požadavek pak může být označený jako cacheovatelný nebo necacheovatelný. Díky tomu je možné transparentně zvýšit výkonnost. Protokol umožňuje funkci Code-On-Demand, díky které je funkcionalita klienta rozšířena o kód, který zašle server. REST umožňuje skládání vrstev, které poskytují služby. To zvyšuje variabilnost například pro cache, transformace nebo rozložení zátěže.
Výhody použití REST API
Škálovatelnost. Tento protokol svou škálovatelností vyčnívá. Díky rozdělení na klient část a server může být produkt škálován vývojovým týmem bez větších problémů.
Flexibilita a přenositelnost. Je možné migrovat z jednoho serveru na druhý nebo kdykoliv změnit databázi. Stačí správně zaslaný request. Frentend a backend mohou být na oddělených serverech, což je velká výhoda z hlediska řízení.
Nezávislost. Rozdělení na klient část a server umožňuje jednodušší nezávislý vývoj napříč různými oblastmi projektu. Navíc REST API se pokaždé přizpůsobí pracovní syntaxi i platformě. To umožňuje zkoušet různá prostředí.
Výhody REST oproti SOAP
Jednodušší na stavbu a adopci.
Menší nároky na zdroje.
Explicitní tvorba instancí procesů.
S úvodním URI již není potřeba, aby klient požadoval routing informace.
Klient může mít obecný listener interface pro sběr notifikací.
Kdy použít REST API
Kdy nepoužívat REST API
Když je potřeba vyžadovat striktní kontrakt mezi klientem a serverem.
Když je potřeba spouštět transakce, které vyžadují více volání.
Obvyklé příklady použití
Služby mediálních sítí.
Sociální sítě.
Webové chatovací služby.
Mobilní služby.
Oblíbené příklady využití
Twitter API
LinkedIn API
Slack API