HATEOAS API: Difference between revisions

From Delft Solutions
Jump to navigation Jump to search
(Add Concurrency Support)
Line 22: Line 22:
!! style="writing-mode: vertical-rl;" | URL as Identifier
!! style="writing-mode: vertical-rl;" | URL as Identifier
!! style="writing-mode: vertical-rl;" | Stable Pagination
!! style="writing-mode: vertical-rl;" | Stable Pagination
!! style="writing-mode: vertical-rl;" | Concurrency Support
|-
|-
| HATEOAS || style="background:#fdffb6"|? || style="background:#caffbf"|Yes || style="background:#fdffb6"|? || style="background:#caffbf"|Yes || style="background:#caffbf"|Yes || style="background:#caffbf"|Yes || style="background:#fdffb6"|?
| HATEOAS || style="background:#fdffb6"|? || style="background:#caffbf"|Yes || style="background:#fdffb6"|? || style="background:#caffbf"|Yes || style="background:#caffbf"|Yes || style="background:#caffbf"|Yes || style="background:#fdffb6"|? || style="background:#caffbf"|Yes
|-
|-
| [https://github.com/XPBytes/media_types-serialization media_types-serialization] (HATEOAS) || style="background:#caffbf"|Yes || style="background:#caffbf"|Yes || style="background:#caffbf"|Yes || style="background:#caffbf"|Yes || style="background:#caffbf"|Yes || style="background:#caffbf"|Yes || style="background:#caffbf"|Yes  
| [https://github.com/XPBytes/media_types-serialization media_types-serialization] (HATEOAS) || style="background:#caffbf"|Yes || style="background:#caffbf"|Yes || style="background:#caffbf"|Yes || style="background:#caffbf"|Yes || style="background:#caffbf"|Yes || style="background:#caffbf"|Yes || style="background:#caffbf"|Yes || style="background:#fdffb6"|?
|-
|-
| [https://docs.github.com/en/free-pro-team@latest/rest/overview/resources-in-the-rest-api Github] (REST) || style="background:#caffbf"|Yes || style="background:#caffbf"|Yes || style="background:#ffadad"|No || style="background:#ffadad"|No || style="background:#caffbf"|Yes || style="background:#caffbf"|Yes || style="background:#caffbf"|Yes  
| [https://docs.github.com/en/free-pro-team@latest/rest/overview/resources-in-the-rest-api Github] (REST) || style="background:#caffbf"|Yes || style="background:#caffbf"|Yes || style="background:#ffadad"|No || style="background:#ffadad"|No || style="background:#caffbf"|Yes || style="background:#caffbf"|Yes || style="background:#caffbf"|Yes || style="background:#ffadad"|No
|-
|-
| [https://opensource.zalando.com/restful-api-guidelines/#114 Zalando] || style="background:#ffadad"|No || style="background:#caffbf"|Yes || style="background:#caffbf"|Yes || style="background:#ffadad"|No || style="background:#ffadad"|No || style="background:#fdffb6"|? || style="background:#caffbf"|Yes
| [https://opensource.zalando.com/restful-api-guidelines/#114 Zalando] || style="background:#ffadad"|No || style="background:#caffbf"|Yes || style="background:#caffbf"|Yes || style="background:#ffadad"|No || style="background:#ffadad"|No || style="background:#fdffb6"|? || style="background:#caffbf"|Yes || style="background:#caffbf"|Yes
|-
|-
| [https://developers.facebook.com/docs/graph-api/overview Facebook Graph API] || style="background:#caffbf"|Yes || style="background:#caffbf"|Yes || style="background:#caffbf"|Yes || style="background:#ffadad"|No || style="background:#ffadad"|No || style="background:#ffadad"|No || style="background:#fdffb6"|?
| [https://developers.facebook.com/docs/graph-api/overview Facebook Graph API] || style="background:#caffbf"|Yes || style="background:#caffbf"|Yes || style="background:#caffbf"|Yes || style="background:#ffadad"|No || style="background:#ffadad"|No || style="background:#ffadad"|No || style="background:#fdffb6"|? || style="background:#ffadad"|No
|-
|-
| [https://shopify.dev/docs/admin-api/rest Shopify] (REST) || style="background:#caffbf"|Yes || style="background:#caffbf"|Yes || style="background:#caffbf"|Yes || style="background:#ffadad"|No || style="background:#ffadad"|No || style="background:#ffadad"|No || style="background:#caffbf"|Yes  
| [https://shopify.dev/docs/admin-api/rest Shopify] (REST) || style="background:#caffbf"|Yes || style="background:#caffbf"|Yes || style="background:#caffbf"|Yes || style="background:#ffadad"|No || style="background:#ffadad"|No || style="background:#ffadad"|No || style="background:#caffbf"|Yes || style="background:#ffadad"|No
|-
|-
| GraphQL || style="background:#ffadad"|No || style="background:#caffbf"|Yes || style="background:#ffadad"|No || style="background:#ffadad"|No || style="background:#caffbf"|Yes || style="background:#ffadad"|No || style="background:#caffbf"|Yes
| GraphQL || style="background:#ffadad"|No || style="background:#caffbf"|Yes || style="background:#ffadad"|No || style="background:#ffadad"|No || style="background:#caffbf"|Yes || style="background:#ffadad"|No || style="background:#caffbf"|Yes || style="background:#ffadad"|No
|}
|}


[[Category: Terminology]]
[[Category: Terminology]]

Revision as of 11:04, 14 January 2021

Originally called REST, HATEOAS is a way of designing HTTP APIs as described in Roy Fieldings thesis. The acronym stands for Hypermedia as the Engine of Application State.

It distinguishes itself from other APIs by having the following properties:

HATEOAS APIs usually make heavy use of HTTP features like:

Comparison

Method Browser Accessible Backward Compatible Backward Compatible (default) HTTP Cachable No URL Construction URL as Identifier Stable Pagination Concurrency Support
HATEOAS ? Yes ? Yes Yes Yes ? Yes
media_types-serialization (HATEOAS) Yes Yes Yes Yes Yes Yes Yes ?
Github (REST) Yes Yes No No Yes Yes Yes No
Zalando No Yes Yes No No ? Yes Yes
Facebook Graph API Yes Yes Yes No No No ? No
Shopify (REST) Yes Yes Yes No No No Yes No
GraphQL No Yes No No Yes No Yes No