No entiendo el beneficio de HATEOAS para las API destinadas a ser utilizadas por programas (a diferencia de los humanos que navegan directamente por su API). Claro, el cliente no está vinculado a un esquema de URL, pero sí a un esquema de datos que es lo mismo en mi mente.
Por ejemplo, suponga que quiero ver un artículo en un pedido, supongamos que descubrí o conozco la URL del pedido.
HATEOAS
order = get(orderURL);
item = get(order.itemURL[5]);
no HATEOAS:
order = get(orderURL);
item = get(getItemURL(order,5));
En el primer modelo tengo que saber el hecho de que el objeto de orden tiene un campo itemURL. En el segundo modelo, tengo que saber cómo construir una URL de elemento. En ambos casos tengo que "saber" algo antes de tiempo, entonces, ¿qué está haciendo realmente HATEOAS por mí?
get(orderURL);
debería estar diciendothe fact that the order object has an itemURL field
.