A HATEOAS ( Hypermedia a s t he Engine o f A Application State ) a REST - alkalmazások építészeti korlátozása .
A HATEOAS segítségével az ügyfél olyan hálózati alkalmazással lép kapcsolatba, amelynek szervere dinamikus hozzáférést biztosít hipermédián keresztül . A REST kliensnek nem kell előre tudnia, hogyan kommunikálhat az alkalmazással vagy a szerverrel a hipermédián kívül.
A SOA architektúrától eltérően , ahol a kliens-szerver interakciókat szigorúan egy interfész határozza meg, a HATEOAS elválasztja az ügyfelet a szervertől, és lehetővé teszi számukra, hogy egymástól függetlenül fejlődjenek.
A REST kliens hozzáfér a rögzített URL-hez, és az ügyfél minden további művelete a kiszolgálótól visszaadott erőforrásokból ismert. Az erőforrástípusok, reprezentációk és kapcsolataik szabványosítottak. A kliens az erőforrásokat úgy járja be, hogy hivatkozásokat kér le, vagy bármilyen más módon interakciót folytat az adott típusú erőforráshoz. Így a RESTful interakciók hipermédián keresztül működnek, nem pedig előre meghatározott interfészen [1] .
Például készítsen egy kérést, amely egy fiókerőforrást XML-reprezentációban ad vissza [2] :
GET /accounts/12345 HTTP / 1.1 Host : bank.example.com Elfogadás : application/xml ...A válasz a következő lesz:
HTTP / 1.1 200 OK Tartalom típusa : Application/xml Tartalomhossz : ... <?xml version="1.0"?> <account> <account_number> 12345 </account_number> <balance currency= "usd" > 100.00 </balance> <link rel= "deposit" href= "https://bank. example.com/accounts/12345/befizetés" /> <link rel= "kivonás" href= "https://bank.example.com/accounts/12345/kivonat" /> <link rel= "átutalás" href= " https://bank.example.com/accounts/12345/transfer" /> <link rel= "close" href= "https://bank.example.com/accounts/12345/close" /> </account>A válasz hivatkozásokat tartalmaz a befizetéshez, kifizetéshez, átutaláshoz és a számla lezárásához
Negatív egyenleg esetén csak befizetés lehetséges:
HTTP / 1.1 200 OK Tartalom típusa : Application/xml Tartalomhossz : ... <?xml version="1.0"?> <account> <account_number> 12345 </account_number> <balance currency= "usd" > -25.00 </balance> <link rel= "befizetés" href= "https://bank .example.com/account/12345/deposit" /> </account>Most már csak egy link érhető el: helyezzen be több pénzt. Ezért a címben szereplő "alkalmazás motorja". A lehetséges műveletek az erőforrás állapotától függően változnak.
Az ügyfélnek nem kell előre ismernie az erőforrások típusait és a velük a szerveren keresztüli interakció mechanizmusait. Az új típusú erőforrások megértése valós időben, futási időben történik, amikor az erőforrásokat megkapják a szervertől [3] .
Roy Fielding doktori disszertációja a HATEOAS korlátokat az „egy interfész” funkció szerves részeként azonosította [3] [1] .
Szoftverfejlesztés | |
---|---|
Folyamat | |
Magas szintű koncepciók | |
Útvonalak |
|
Fejlesztési módszertanok | |
Modellek |
|
Figyelemre méltó alakok |
|