Ultimamente ho letto su Hypermedia come il motore dello stato dell'applicazione (HATEOAS), il vincolo che si pretende di rendere un'API web "veramente RESTful". Si riduce fondamentalmente a includere collegamenti con ogni risposta alle possibili transizioni che si possono fare dallo stato corrente.
Lascia che ti illustri cosa è basato su HATEOAS sulla mia comprensione - e per favore correggimi se mi sono perso qualcosa.
/
    GET: {
        "_links": {
            "child": [
                { "href": "http://myapi.com/articles", "title": "articles" }
            ]
        }
    }
/articles?contains=HATEOAS
    GET: {
        "_items": [
            { "uri": "http://myapi.com/articles/0", "title": "Why Should I Care About HATEOAS?" },
            { "uri": "http://myapi.com/articles/1", "title": "HATEOAS: Problem or Solution?" }
        ],
        "_links": {
            "self": { "href": "http://myapi.com/articles", "title": "articles" },
            "parent": { "href": "http://myapi.com/", "title": "home" }
        }
    }
    POST: {
        "title": "A New Article",
        "body": "Article body",
        "tags": [ "tag1", "tag2" ]
    }
/articles/0
    GET: {
        "title": "Why Should I Care About HATEOAS?",
        "body": "Blah blah blah"
        "tags": [ "REST", "HATEOAS" ],
        "_links": {
            "self": { "href": "http://myapi.com/articles/0", "title": "article" },
            "parent": { "href": "http://myapi.com/articles", "title": "articles" }
        }
    }
HATEOAS afferma di fornire due importanti vantaggi:
-  L'intero servizio è individuabile a partire dall'URI radice, la documentazione non è più necessaria. 
-  Il client è disaccoppiato dal server che ora può modificare liberamente la struttura dell'URI. Ciò elimina la necessità del versioning delle API. 
Ma a mio avviso, un servizio è molto più della sua struttura URI. Per usarlo efficacemente, devi anche sapere:
- quali parametri di query puoi utilizzare e i loro possibili valori
- la struttura di JSON / XML / i documenti che devi inviare nelle tue richieste POST / PATCH / etc
- la struttura della risposta inviata dal server
- i possibili errori che potrebbero verificarsi
- ...
Sulla base di quanto sopra, HATEOAS risolve solo una piccola parte dei problemi di scopribilità e accoppiamento. È comunque necessario documentare i quattro aspetti di cui sopra e i client saranno comunque strongmente accoppiati al server a causa di questi. Per evitare di rompere i client, devi comunque eseguire la versione dell'API.
L'unico vantaggio che offre è che puoi modificare la struttura dell'URL più o meno liberamente (a proposito, cosa è successo al principio " Gli URI freschi non cambiano "?). La mia comprensione è corretta?