Non capisco il vantaggio di HATEOAS per le API destinate all'uso da parte dei programmi (al contrario degli umani che navigano direttamente nella tua API). Certo, il cliente non è vincolato a uno schema URL ma è legato a uno schema di dati che è la stessa cosa nella mia mente.
Ad esempio, supponiamo di voler visualizzare un articolo su un ordine, supponiamo di aver già scoperto o di conoscere l'URL dell'ordine.
hateoas:
order = get(orderURL);
item = get(order.itemURL[5]);
non hateoas:
order = get(orderURL);
item = get(getItemURL(order,5));
Nel primo modello devo sapere che l'oggetto ordine ha un campo itemURL. Nel secondo modello devo sapere come costruire un URL elemento. In entrambi i casi devo "sapere" qualcosa in anticipo, quindi cosa sta facendo effettivamente HATEOAS per me?
get(orderURL);
dovrei dirtelothe fact that the order object has an itemURL field
.