poznáme.it Aplikačná architektúra Anatómia REST sieťových služieb

Anatómia REST sieťových služieb

Anatómia REST sieťových služieb 1„Znovuzjednotenie webu“. Aj takýto názov má jedna z kapitol knihy RESTFul web services od Leonarda Richardsona a Sama Rubyho. Kniha nie je len popisom toho, ako REST sieťové služby vyzerajú, ale hlavne silnou obhajobou, prečo ich používať. A tiež toho, prečo sú v prostredí internetu viac prirodzené ako ich staršie príbuzné – SOAP služby.

Jednou z hlavných myšlienok, ktorá sa prelína celou knihou je, že SOAP služby posunuli používanie internetu (ako množiny rôznych štandardov) do úrovne, ktorá je silne vzdialená jeho zvyšku.

Aby ste rozumeli o čom hovorím, tu je ukážka z toho, ako fungoval HTTP protokol niekedy v jeho úplnom začiatku:

Požiadavka klienta: GET /hello.txt   (vypýtanie si súboru hello.txt)

Odpoveď: Hello, world!   (obsah súboru hello.txt)

HTTP bol vytvorený na získavanie dokumentov zo servera – to, na čo kedysi vznikol internet ako výmenná sieť údajov medzi vysokými školami. Od tých čias už prešla dlhá cesta a niekde na tej ceste sa začali používať SOAP služby. Zatiaľ čo v pôvodnom protokole bolo jasné, čo chcete robiť a s akými údajmi už na úrovni HTTP („GET“ – čo chcem robiť, „/hello.txt“ – s akými údajmi), SOAP služby priniesli RPC štýl, kedy sa stále vykonávajú dotazy na jednu URL adresu pomocou POST príkazu. To, čo sa vlastne má udiať medzi klientom a serverom je ukryté v tele dotazu v SOAP správe. To je práve ten rozdiel oproti klasickým web stránkam, ktoré si čiastočne zachovávajú pôvodný štýl – čo iné údaje, to iná URL (aj keď už aj v tejto oblasti nastal odklon napríklad vďaka Ajax-u).

A v tomto momente sa dostávame k tomu znovuzjednoteniu, o ktorom som písal úplne na začiatku. Čo ak by sme vedeli navrhnúť služby tak, aby sa podobali stránkam? Vrátiť sa z odbočky, ktorú predstavujú SOAP služby a skúsiť zachovať základné pravidlá webu. Riešením novej generácie by mali byť REST služby…

REST služby sú hlavne o menšom počte štandardov a ich väčšom využití. Tie štandardy sú vlastne tri: HTTP, URI a XML (alebo JSON, alebo XHTML atď.). To je všetko, čo potrebujete poznať, ak chcete komunikovať s REST službami. Základná myšlienka je, že URI definuje údaje, s ktorými chcete pracovať a HTTP operáciu, teda čo s údajmi chcete spraviť. Ak ste sa doteraz stretávali s dvoma operáciami GET a POST, tak vedzte, že HTTP ich má ešte viac. Napríklad PUT, DELETE, HEAD a OPTIONS. To už je celkom slušný arzenál na to, aby ste na tom vedeli postaviť nejakú infraštruktúru. GET a POST získali svoju slávu hlavne preto, lebo sa používajú na štandardom webe (GET na získanie údajov stránky a POST na odoslanie výsledkov formulára).

A to je v podstate všetko – ideálne by to malo byť takto jednoduché. Napríklad

PUT /hodas/issue

môže byť vloženie nového problému do systému evidencie chýb pre projekt s názvom hodas (údaje tohto nového problému sú zapísané v tele HTTP dotazu pomocou niektorého popisného formátu, ktoré som spomínal hore). Ako bude URI vyzerať a ako bude interpretovaná už závisí čiste na tvorcovi systému. Najväčší rozdiel medzi SOAP a REST je teda hlavne v tom, ako komunikujte so serverom – aké štandardy a ako ich používajú. Naopak, metóda, ktorá obslúži túto požiadavku na serveri napísaná v nejako programovacom jazyku môže byť veľmi podobná v oboch prípadoch. Samozrejme, že potrebujete nejaký REST framework, ktorý na základe URL zavolá správnu metódu (tie sú dnes ale pre každú populárnu platformu – kniha tiež obsahuje zoznam a príklad použitia pre niekoľko z nich).

Zaujímavou vlastnosťou REST-u je, že v odpovedi, ktorá príde zo servera môžu byť zapísané odkazy na iné údaje – teda URL. Takto si viem na základe prvej odpovede získavať ďalšie údaje. To je nepochybne vlastnosť, ktorá sa v SOAP službách dosahuje len ťažko a je to tiež krok späť ku klasickému webu, kde je previazanie hyper-linkami bežná záležitosť.

REST služby nie sú žiadne ideálne riešenie na všetky prípady. Aj keď čerpajú z jednoduchosti a toho, že sa viac podobajú na klasické stránky, existujú oblasti, kde ich použitie nie je také jednoduché ako pri SOAP službách. Sú to napríklad rôzne kroky procesov v komunikácii medzi klientom a serverom. Príkladom môže byť realizácia jednej transakcie v rámci viacerých služieb, asynchrónne operácie alebo zložité bezpečnostné a komunikačné požiadavky, ktoré dokážu obslúžiť WS-* štandardy. Napriek tomu sa zdajú REST služby o čosi lepšie ako SOAP. Už len preto, lebo sú jednoduchšie. A to je v softvérovom svete, kde zložitosť môže byť jedným z najväčších problémov, veľmi zaujímavá vlastnosť.


Dobrý článok? Chceš dostávať ďalšie?

Už viac ako 6 200 ITečkárov dostáva správy e-mailom. Nemusíš sa báť, nie každé ráno. Len občasne.



Súhlasím so spracovaním mojich osobných údajov. ( Viac informácií. )

Tvoj email neposkytneme 3tím stranám. Posielame naňho len informácie z robime.it. Kedykoľvek sa môžeš odhlásiť.

Peter Špireng
Peter Špirenghttp://www.spireng.sk/
Živí ma tvorba softvéru a riadenie softvérových tímov a zaujíma všetko, čo sa dotýka týchto oblastí. Okrem toho je mojou obľúbenou témou riadenie osobného času (time-management). Vo voľnom čase sa snažím veľa čítať a trocha písať.

Senior Python Developer/ka

Úspešný americký startup, ktorý umožňuje vývojárom vytvárať aplikácie a rozhrania API bez akýchkoľvek časových, priestorových a cloudových architektúr hľadá...

C#/.NET & React Fullstack Developer/ka

FullStack Developer/ka | Vývoj nového produktu | Security Pracoval/a by si na TPP s platom 2400 - 2800 EUR/brutto mesačne...

Data Visualization Senior Analyst

Pre medzinárodnú IT spoločnosť hľadáme Senior Data Visualization Analyst. Pracujú na veľkých projektoch pre top 100 svetových spoločností. Ide o...

Splunk Data Engineer

Chcel by si dlhodobú spoluprácu, dobré pracovné podmienky, seriózny prístup? Medzinárodná IT spoločnosť hľadá Splunk Data Engineera. Pracujú na veľkých...

Senior Java Developer

Úspešný americký startup, ktorý umožňuje vývojárom vytvárať aplikácie a rozhrania API bez akýchkoľvek časových, priestorových a cloudových architektúr hľadá...

Backend/Node.js Developer / REMOTE

Pre mladý startup vyvíjajúci softvér, ktorý prispieva hráčom k lepšiemu zážitku z hrania, hľadáme Backend/Node.js Developera. Založili ho dvaja...

Julia Developer / REMOTE

Projekt pre nadšencov Julia a machine learning. Pre spoločnosť, ktorá používa matematické metódy a metódy AI / ML na...

Máte vo firemných stretnutiach chaos? Česká firma našla riešenie, teraz s aplikáciou dobývajú svet

Vyvíjajú ju v Českej republike, pracujú na nej aj hendikepovaní kolegovia a používajú ju firmy v rôznych krajinách sveta....

Ondrej Kubovič – Digitálna bezpečnosť a riziká na internete

Tentokrát sme sa porozprávali s Ondrejom Kubovičom, špecialistom v spoločnosti ESET na populárnu tému digitálnej bezpečnosti. Ondrej nám uviedol...

Slovenskí tvorcovia hier dosiahli v roku 2020 rekordný obrat 72 miliónov EUR, zamestnávali 870 ľudí

Slovenský herný priemysel nezastavila ani pandémia, v roku 2020 opäť výrazne rástol. Podľa štatistík Slovak Game Developers Association prekonal...

Čítaj ďalej:

Dobrý článok? Chceš dostávať ďalšie?

Už viac ako 6 200 ITečkárov dostáva správy e-mailom. Nemusíš sa báť, nie každé ráno. Len občasne.

Súhlasím so spracovaním mojich osobných údajov. ( Viac informácií. )

Tvoj email neposkytneme 3tím stranám. Posielame naňho len informácie z robime.it. Kedykoľvek sa môžeš odhlásiť.