HATEOAS
≈ 3 min read
Names in other languages
No names in other languages are held for this entry yet.
Article bodies are English and are not machine-translated. A name in another language is not a translation of the article.
Hypermedia as the engine of application state (HATEOAS) is a constraint of the REST software architectural style that distinguishes it from other network architectural styles. With HATEOAS, a client interacts with a network application whose application servers provide information dynamically through hypermedia. A REST client needs little to no prior knowledge about how to interact with an application or server beyond a generic understanding of hypermedia. By contrast, clients and servers in Common Object Request Broker Architecture (CORBA) interact through a fixed interface shared through documentation or an interface description language (IDL). The restrictions imposed by HATEOAS decouple client and server. This enables server functionality to evolve independently. The term was coined in 2000 by Roy Fielding in his doctoral dissertation.
Hypermedia as the engine of application state (HATEOAS) is a constraint of the REST software architectural style that distinguishes it from other network architectural styles. With HATEOAS, a client interacts with a network application whose application servers provide information dynamically through hypermedia. A REST client needs little to no prior knowledge about how to interact with an application or server beyond a generic understanding of hypermedia. By contrast, clients and servers in Common Object Request Broker Architecture (CORBA) interact through a fixed interface shared through documentation or an interface description language (IDL). The restrictions imposed by HATEOAS decouple client and server. This enables server functionality to evolve independently. The term was coined in 2000 by Roy Fielding in his doctoral dissertation. GET /accounts/12345 HTTP/1.1 Host: bank.example.com The response is: HTTP/1.1 200 OK { "account": { "account_number": 12345, "balance": { "currency": "usd", "value": 100.00 }, "links": { "deposits": "/accounts/12345/deposits", "withdrawals": "/accounts/12345/withdrawals", "transfers": "/accounts/12345/transfers", "close-requests": "/accounts/12345/close-requests" } } } The response contains these possible follow-up links: POST a deposit, withdrawal, transfer, or close request (to close the account). As an example, later, after the account has been overdrawn, there is a different set of available links, because the account is overdrawn. HTTP/1.1 200 OK { "account": { "account_number": 12345, "balance": { "currency": "usd", "value": -25.00 }, "links": { "deposits": "/accounts/12345/deposits" } } } Now only one link is available: to deposit more money (by POSTing to deposits). In its current state, the other links are not available. Hence the term Engine of Application State. What actions are possible varies as the state of the resource varies. A client does not need to understand every media type and communication mechanism offered by the server. The ability to understand new media types may be acquired at run-time through "code-on-demand" provided to the client by the server. ==See also== htmx Hypertext Application Language Universal Description Discovery and Integration is the equivalent for the Web Services Description Language
Text derived from https://en.wikipedia.org/w/index.php?oldid=1346802853 under CC BY-SA 4.0; modifications have been made.