Non capisco il vantaggio di HATEOAS per le API destinate all'uso da parte dei programmi (al contrario degli utenti che navigano direttamente nella tua API). Certo, il cliente non è legato a uno schema URL ma è legato a uno schema di dati che è la stessa cosa nella mia mente.
Ad esempio, supponiamo che voglio vedere un articolo su un ordine, supponiamo di aver già scoperto o conosciuto già 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 oggetto. In entrambi i casi devo "sapere" qualcosa in anticipo, quindi cosa sta facendo HATEOAS per me?