HATEOAS ( Hypermedia a s t he Engine o f A Application State ) ovat arkkitehtonisia rajoituksia REST - sovelluksille .
HATEOAS:n avulla asiakas on vuorovaikutuksessa verkkosovelluksen kanssa, jonka palvelin tarjoaa dynaamisen pääsyn hypermedian kautta . REST-asiakkaan ei tarvitse tietää etukäteen, kuinka se on vuorovaikutuksessa sovelluksen tai palvelimen kanssa hypermedian ulkopuolella.
Toisin kuin SOA -arkkitehtuuri , jossa asiakas-palvelin-vuorovaikutus määritellään tiukasti rajapinnalla, HATEOAS erottaa asiakkaan palvelimesta ja antaa niiden kehittyä itsenäisesti.
REST-asiakas käyttää kiinteää URL-osoitetta, ja kaikki asiakkaan myöhemmät toiminnot tunnetaan palvelimelta palautetuista resursseista. Resurssityypit, esitykset ja niiden suhteet ovat standardoituja. Asiakas kulkee resurssien läpi hakemalla linkkejä tai toimimalla millä tahansa muulla mahdollisella tavalla tämän tyyppiselle resurssille. Siten RESTful-vuorovaikutukset toimivat hypermedian kautta eikä ennalta määritellyn käyttöliittymän kautta [1] .
Tee esimerkiksi pyyntö, joka palauttaa tiliresurssin XML-muodossa [2] :
GET /accounts/12345 HTTP / 1.1 Host : bank.example.com Hyväksy : application/xml ...Vastaus tulee olemaan:
HTTP / 1.1 200 OK Sisältö-tyyppi : sovellus/xml Sisältö-pituus : ... <?xml version="1.0"?> <tili> <tilin_numero> 12345 </account_number> <saldo currency= "usd" > 100,00 </balance> <link rel= "talletus" href= "https://pankki. esimerkki.fi/tilit/12345/talletus" /> <link rel= "nosto" href= "https://pankki.esimerkki.fi/tilit/12345/nosto" /> <link rel= "siirto" href= " https://bank.example.com/accounts/12345/transfer" /> <link rel= "close" href= "https://bank.example.com/accounts/12345/close" /> </account>Vastaus sisältää linkkejä talletuksiin, kotiutuksiin, siirtoihin ja tilin sulkemiseen
Jos saldo on negatiivinen, käytettävissä on vain talletus:
HTTP / 1.1 200 OK Sisältö-tyyppi : sovellus/xml Sisältö-pituus : ... <?xml version="1.0"?> <tili> <tilin_numero> 12345 </account_number> <saldo currency= "usd" > -25,00 </balance> <link rel= "talletus" href= "https://pankki .example.com/account/12345/deposit" /> </account>Nyt käytettävissä on vain yksi linkki: talleta enemmän rahaa. Tästä syystä "sovelluksen moottori" otsikossa. Mahdolliset toimet vaihtelevat resurssin tilan mukaan.
Asiakkaan ei tarvitse tietää etukäteen resurssien tyyppejä ja mekanismeja vuorovaikutuksessa niiden kanssa palvelimen kautta. Uudentyyppisten resurssien ymmärtäminen hankitaan reaaliajassa, ajon aikana, kun resurssit vastaanotetaan palvelimelta [3] .
Roy Fieldingin väitöskirja identifioi HATEOAS-rajoitukset kiinteäksi osaksi "yhden rajapinnan" ominaisuutta [3] [1] .
Ohjelmistokehitys | |
---|---|
Prosessi | |
Korkean tason käsitteet | |
Ohjeet |
|
Kehittämismenetelmät _ | |
Mallit |
|
Merkittäviä lukuja |
|