Sto cercando di conoscere REST e problemi con il concetto di HATEOAS (Hypermedia As The Engine Of Application State). A cosa serve?
Mi sembra che la maggior parte dei commentatori del web pensi che HATEOAS debba essere usato da un cliente per scoprire come usare un servizio web RESTful. E la maggior parte sembra concludere che HATEOAS non valga la pena includere nei servizi web RESTful per una di queste due ragioni:
1) HATEOAS fornisce solo URL, ma questi sono inutili da soli senza sapere quali metodi possono essere usati con ciascun URL (es. HTTP GET, POST, PUT). Poiché le informazioni aggiuntive devono essere passate al client fuori banda (ad es. Tramite la documentazione), non ha senso utilizzare HATEOAS;
2) Simile a (1) ma fa un ulteriore passo avanti: il client può capire quali metodi sono applicabili a un dato URL chiamando il metodo HTTP OPTIONS. Tuttavia, il cliente ha ancora bisogno di informazioni fuori banda, per descrivere il formato dei dati che deve passare per, ad esempio, i metodi POST o PUT. Quindi finiamo nello stesso posto di (1) - HATEOAS non è sufficiente per un cliente per scoprire tutto ciò che deve sapere, quindi perché preoccuparsi di questo.
Questi argomenti sembrano validi se HATEOAS dovrebbe essere usato da un client per scoprire come usare un servizio web RESTful. Tuttavia, è questo che HATEOAS è per? Dai pochi esempi che ho visto, mi sembra perfetto per navigare attraverso un servizio web - Ho eseguito una determinata azione, ora quali sono le azioni valide che posso eseguire in seguito? Questo mi sembra gelificare con la parte "Application State" di HATEOAS ma pochi articoli che ho letto ne parlano in termini di navigazione, quasi tutti riguardano la scoperta.
Quindi, HATEOAS sta scoprendo come utilizzare un servizio web RESTful o è davvero sulla navigazione?