HATEOAS - 刷新页面时加载资源

时间:2017-03-09 23:55:19

标签: api hateoas

我从HATEOAS开始,我有一个简单的问题。当我想通过其ID加载特定资源时,最好的方法是什么?目前我对/ root路由请求,这条路由给我一个这样的链接:

{ "rel": "order", "href": "http://api.com/orders/:id" }

使用模板字符串是一种不错的方法吗?

其他问题是:当我有10种资源类型时,我需要将这10次放在root响应中吗?

1 个答案:

答案 0 :(得分:1)

反问题 - 你从哪里得到你的ids?

我假设通过您的API抓取链接 - 但为什么不保存服务器返回的整个链接,而不仅仅是ID?

这实际上是HATEOAS的想法:您的API是可以被攻击的,而您只是使用API​​返回的链接,而不是从您从资源中提取的ID中组装自己的API。

优点是当API更改(路径重命名等)时,您不需要更改客户端代码。

但如果您需要将链接保留更长时间(例如,当您想要以某种形式为其添加书签时),这可能不是一个好策略。

然后,如您所建议的那样,使用链接模板是一个好主意,并从根资源(或从可从根资源轻松访问的合适子资源)中检索链接的模板。

像这样你可以确定你总是有有效的链接,但是,这也意味着你必须将它们全部放在那里(或者至少是你支持深层链接的那些)。

要表达模板化链接,您可以使用HAL:stateless.co/hal_specification.html