Я не розумію переваги HATEOAS для API, призначених для використання програмами (на відміну від людей, які безпосередньо переглядають ваш API). Звичайно, клієнт не прив’язаний до схеми URL-адрес, але він прив’язаний до схеми даних, яка є тим самим, що я думаю.
Наприклад, припустимо, що я хочу переглянути товар у замовлення, припустимо, я вже виявив URL-адресу замовлення чи знаю її вже.
HATEOAS:
order = get(orderURL);
item = get(order.itemURL[5]);
не HATEOAS:
order = get(orderURL);
item = get(getItemURL(order,5));
У першій моделі я повинен знати факт, що в об’єкта замовлення є поле itemURL. У другій моделі я повинен знати, як побудувати URL-адресу елемента. В обох випадках я мушу щось «знати» достроково, і що, власне, HATEOAS робить для мене?
get(orderURL);
повинен вам сказатиthe fact that the order object has an itemURL field
.