REST

REST (representational state transfer) on tarkvaraarhitektuuri laad, mis seab veebirakenduse loomisele kindlad piirid. Tihti kutsutakse selliseid veebirakendusi ka RESTful veebirakendusteks. Veebirakendused, mis on ehitatud REST arhitektuuril, tagavad internetis rakenduste koostoimimise. RESTful rakendused lubavad teistel süsteemidel juurde pääseda ja manipuleerida enda ressursse, kasutades selleks eelnevalt kindlaks määratud ilma olekuta päringuid. Muud arhitektuurid, näiteks SOAP, kasutavad omaenda toimingukomplekte.

REST arhitektuuri põhiidee seisneb selles, et tehakse erinevat tüüpi päringuid REST-arhitektuuriga üles seatud erinevatele URI-dele, mis seejärel vastavad sobiva vastusega. Vastuse vorming ei ole kindlaks määratud ja oleneb rakenduse tüübist. Levinumad vormingud on JSON, HTML ja XML. Rakenduselt saadud vastus sisaldab staatuse koodi, mis ütleb, kas tehtud päring oli edukas, ja olenevalt päringust ka lisaandmeid, mida rakenduselt küsiti. Kui kasutatakse HTTP-d, mis on kõige levinum protokoll RESTful rakenduste jaoks, siis olemasolevate toimingute hulka kuuluvad GET-, POST-, PUT-, DELETE- ja PATCH-toimingud, tihti tuntud ka kui CRUD-toimingud.

Kasutades sobivaid protokolle ja standardseid toiminguid, püüavad RESTful-süsteemid komponentide uuesti kasutamise ja värskendamisega saavutada suurt jõudlust, töökindlust ja võimet laieneda, ilma kogu töötavat süsteemi mõjutamata.

Termini representational state transfer defineeris ja võttis kasutusele Roy Fielding 2000. aastal oma doktoritöös. Fieldingi töö seletas RESTi põhimõtteid, mida senimaani nimetati "HTTP objekti mudeliks", mis oli kasutusel aastast 1994 ja seda kasutati HTTP 1.1 ja URI standardite disainimiseks. Mõiste eesmärk on kujundada hästi kavandatud veebirakenduse käitumine: see on veebiressursside võrk (virtuaalne olek-masin), kus kasutaja edastab rakenduse kaudu, valides lingid, näiteks /user/tom ja sellised toimingud nagu GET või DELETE (seisundi muudatus), mille tulemuseks edastatakse kasutajale järgmine ressurss, mis esindab rakenduse järgmist seisundit.

 Ajalugu 
pisi|Roy Fielding esinemas OSCON-il 2008
Roy Fielding määratles REST arhitektuuri oma 2000. aasta doktoritööga "Arhitektuurilaadid ja võrgupõhiste tarkvaraspetsifikaatide projekteerimine" California Ülikoolis. Ta arendas 1996.–1999. aastal HTTP 1.1 protokolli, mis põhines 1996. aastal loodud HTTP 1.0-l. Tagasiulatuvalt REST arhitektuuri arendamisele ütles Fielding järgmist:

"HTTP standardimisprotsessi käigus kutsuti mind üles kaitsma veebi disainivalikuid. See on äärmiselt keeruline asi, mida teha protsessis, mis võtab vastu ettepanekud kõikidel teemadel, mis on kiiresti muutumas kogu tööstusharu keskmesse. Mul oli kommentaare rohkem kui 500 arendajalt, kellest paljud olid kümnete aastate suuruse kogemusega insenerid, ja ma pidin seda selgitama kõige abstraktsematest interaktiivsest suhtumistest kuni HTTP-süntaksi parimate üksikasjadega. See protsess muutis minu mudeli põhimõtteid, omadusi ja piiranguid, mida nüüd nimetatakse RESTiks."

 Arhitektuuri omadused 
REST arhitektuuri stiili piirangud mõjutavad järgmisi arhitektuurilisi omadusi:

 komponentidevaheliste interaktsioonide jõudlus, mis võib olla kasutaja tajutava jõudluse ja võrgu tõhususe domineeriv tegur;
 skaleeritavus, mis võimaldab toetada suurt hulka komponente ja nendevahelisi interaktsioone;
ühtse liidese lihtsus;
 komponentide muutmine uute vajaduste rahuldamiseks, isegi kui rakendus töötab;
 teenindusagentide ja komponentide vahelise kommunikatsiooni läbipaistvus;
 komponentide teisaldatavus programmi koodi ja andmete abil;
 süsteemi stabiilsus pistikühendustes, komponentides või andmetes esinevate tõrgete korral.

Roy Fielding kirjeldab RESTi skaleeritavust järgmiselt:
"RESTi klient-serveri lahutamine lihtsustab komponentide rakendamist, vähendab pistikühenduse semantika keerukust, parandab jõudluse häälestamise efektiivsust ja suurendab täielike serverikomponentide skaleerumisvõimet. Kihtsüsteemi piirangud võimaldavad vahendajaid – puhverservereid, lüüse ja tulemüüre kasutada mitmesugustes kommunikatsioonipunktides, muutmata komponentide vahelisi liideseid, võimaldades seega neil abistada suhtlemist tõlkimisel või suurendada jõudlust kasutades jagatud puhvrit. REST võimaldab sõnumite vahepealset töötlemist: suhtlus päringute vahel on ilma olekuta, semantika ja teabe vahetamiseks kasutatakse standardseid meetodeid ja meediumitüüpe ning vastused lubavad puhvri kasutust."

 URLi ja sobivate HTTP meetodite kasutamine 
Järgnev tabel demonstreerib, kuidas HTTP meetodeid tavaliselt REST API-des kasutatakse:
+HTTP meetodid(URL) ühtne ressursilokaator (Uniform Resource Locator)GETPUTPATCHPOSTDELETEKoguhttps://api.example.com/resources/Tagastatakse list kogu elementide URI-dest ja vahel ka muust nendega seonduvast infost.Üks kogu asendatakse teise koguga.Üldiselt seda ei kasutata.Kogusse luuakse uus kirje. Uue kirje on URI on loodud automaatselt ja on tavaliselt ka vastuses tagastatud.Terve kogu kustutatakse.Element https://api.example.com/resources/item17Tagastatakse kogu elemendi andmed sobivad meediatüübis.Asendatakse olemasolev element või luuakse selle puudumisel uus element.Uuendatakse olemasolevat elementi uute andmetega.Üldiselt seda ei kasutata, kuid kasutamisel on selle eesmärk muuta element omakorda koguks.Kogust kustutatakse element.

 Viited 

Kategooria:Tarkvaraarendus
Kategooria:Veeb 2.0