Archiv pro 28. February 2008

Jak jsem (ne)pochopil REST

S křížkem po funusu ale přece! V tomto článku bych chtěl několika větami okomentovat :lednovou přednášku":http://www­.java.cz/deta­il.do?… Jakuba Podlešáka Java API pro RESTful web services. Po obyčejném blogování se mi už pekelně stýskalo. Od půlky prosince totiž nedělám nic jiného než že se snažím přivést k životu naše kontaktní čočky.

REST

REST chápu jako soubor pravidel pro manipulaci s daty po síti (zpravidla pomocí HTTP protokolu). V RESTu se pracuje se resourci – zdroji. Každý zdroj má svoji unikátní adresu. Pomocí volání adresy zdroje s ním lze provádět operace. Od prostého načtení po vytvoření, modifikaci až po smazání. Kromě zavolání zdroje pomocí adresy (URL) lze do těla požadavku zabalit další data – například pro vytvoření nového zdroje. Data mohou být v různé formě – např XML, JSON, plain text…

REST naopak nedefinuje autentizaci a autorizaci uživatelů. REST je bezstavový.

Jak je to s tou stavovostí RESTu?

A právě o stavovosti RESTu bych se chtěl zamyslet. Na přednášce proběhla vášnivá debata na téma stavovost RESTu. Padly zde názory, že když pracuju s webovou aplikací používající REST a uložím nový zdroj, tak se přece musí jednat o stavové chování. Vždyť se přece změnil stav aplikace.

Výše uvedený názor je nesmysl. Se stavovostí RESTu je to stejně jako se stavostí HTTP protokolu – je nestavový. Uvedu na jednoduchém příkladu. Tím příkladem jsou sessions.

Příklad se sessions

Sessions fungují tak, že server přibalí do odpovědi klienta unikátní idenfikátor, který označuje session id. Toto cookies se pak přenáší při další komunikaci mezi serverem a klientem. Klient session id přibaluje buď do:

  • URL
  • POST dat
  • cookies

A naprosto stejně to funguje i s RESTem. Když budeme mít resource na adrese http://vavru.cz/eshop/vyt­vorit-kosik/, může odpověď vypada například takto – http://vavru.cz/eshop/ko­sik/wsdei9012309a­/. Dostali jsme zpět adresu na nově vytvořený košík. Když pak klient chce s tím to košíkem (každý klient má svůj košík) musí uvést celou adresu košíku. Takže pro přidání nové položky bychom mohli použít například takovýhle odkaz – http://vavru.cz/eshop/ko­sik/wsdei9012309a­/pridat-produkt/ a v těle požadavku specifikovat o jaký produkt se jedná a například počet kusů.

Zdá se vám to jednoduché?

Mně taky. Proto nechápu tolik případů nepochopení ze strany posluchačů. Možná jsem to celé jenom špatně pochopil a chyba je na mé straně. V tom případě prosím nějakého zkušeného RESTovače, aby mě například pomocí komentáře přivedl na správnou cestu.

Celý článek 12 komentářů 28. February 2008


Kalendář

February 2008
M T W T F S S
« Jan   Apr »
 123
45678910
11121314151617
18192021222324
2526272829  

Články podle měsíců

Kategorie

Locations of visitors to this page