对于供程序使用的API(相对于人类直接浏览您的API而言),HATEOAS的好处我不理解。当然,客户并没有绑定到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
。