Viac na
Čo presne je programovanie RESTful?
Čo presne je programovanie RESTful?
3909
3
Čo presne je programovanie RESTful?
REST je základným architektonickým princípom webu. Na webe je úžasné to, že klienti (prehliadače) a servery môžu komunikovať zložitým spôsobom bez toho, aby klient vopred vedel čokoľvek o serveri a zdrojoch, ktoré hostí. Kľúčovým obmedzením je, že server a klient sa musia dohodnúť na použitom médiu, čo je v prípade webu HTML.
Rozhranie API, ktoré dodržiava zásady REST, nevyžaduje, aby klient vedel čokoľvek o štruktúre rozhrania API. Server musí skôr poskytnúť všetky informácie, ktoré klient potrebuje na interakciu so službou. Príkladom je formulár HTML: Server špecifikuje umiestnenie zdroja a požadované polia. Prehliadač vopred nevie, kam má informácie odoslať, a vopred nevie, aké informácie má odoslať. Obidve formy informácií poskytuje výhradne server (Tento princíp sa nazýva HATEOAS: Hypermedia As The Engine Of Application State.)
Ako sa to teda vzťahuje na HTTP a ako sa to dá implementovať v praxi? HTTP je orientovaný na slovesá a zdroje. Dve slovesá, ktoré sa bežne používajú, sú
GET
aPOST
, ktoré, myslím, každý pozná. Štandard HTTP však definuje niekoľko ďalších, napríkladPUT
aDELETE
. Tieto slovesá sa potom aplikujú na zdroje podľa pokynov poskytnutých serverom.Predstavme si napríklad, že máme databázu používateľov, ktorú spravuje webová služba. Naša služba používa vlastné hypermédium založené na JSON, ktorému priradíme mimetyp
application/json+userdb
(môže existovať ajapplication/xml+userdb
aapplication/whatever+userdb
- podporovaných môže byť mnoho typov médií). Klient aj server boli naprogramovaní tak, aby rozumeli tomuto formátu, ale navzájom o sebe nič nevedia. Ako uvádza Roy Fielding:Rozhranie REST API by malo vynaložiť takmer všetko svoje úsilie na opis
Požiadavka na základný zdroj
/
môže vrátiť niečo takéto:požiadavka
Odpoveď
Z popisu nášho média vieme, že informácie o súvisiacich zdrojoch môžeme nájsť v sekciách s názvom "odkazy". Toto sa nazýva Hypermediálne ovládacie prvky. V tomto prípade môžeme z takejto sekcie zistiť, že zoznam používateľov môžeme nájsť tak, že vykonáme ďalšiu požiadavku na
/user
:požiadavka
Odpoveď
Z tejto odpovede sa dá veľa vyčítať. Napríklad teraz vieme, že môžeme vytvoriť nového používateľa pomocou
POST
na/user
:požiadavka
Odpoveď
Vieme tiež, že môžeme zmeniť existujúce údaje:
Požiadavka
Odpoveď
Všimnite si, že na manipuláciu s týmito zdrojmi používame rôzne HTTP slovesá (
GET
,PUT
,POST
,DELETE
atď.) a že jediná znalosť, ktorú predpokladáme na strane klienta, je naša definícia média.Ďalšie čítanie:
(Táto odpoveď bola predmetom pomerne veľkej kritiky za to, že jej chýba zmysel. Z väčšej časti to bola spravodlivá kritika. To, čo som pôvodne opísal, bolo skôr v súlade s tým, ako sa REST zvyčajne implementoval pred niekoľkými rokmi, keď som to písal prvýkrát, než s jeho skutočným významom. Odpoveď som zrevidoval, aby lepšie predstavovala skutočný význam).
REST používa na manipuláciu s údajmi rôzne metódy HTTP (najmä GET/PUT/DELETE).
Namiesto použitia konkrétnej adresy URL na vymazanie metódy (napríklad
/user/123/delete
) by ste poslali požiadavku DELETE na adresu URL/user/[id]
, na úpravu používateľa, na získanie informácií o používateľovi by ste poslali požiadavku GET na adresu/user/[id]
Namiesto toho môžete použiť napríklad sadu adries URL, ktoré môžu vyzerať ako niektoré z nasledujúcich..
Používate HTTP "slovesá" a máte..
Je to programovanie, pri ktorom architektúra vášho systému zodpovedá štýlu REST, ktorý stanovil Roy Fielding vo svojej práci 1. Keďže ide o architektonický štýl, ktorý (viac-menej) opisuje web, zaujíma sa oň veľa ľudí.
Bonusová odpoveď: Pokiaľ neštudujete softvérovú architektúru ako akademický pracovník alebo nenavrhujete webové služby, nie je dôvod, aby ste tento termín počuli.