2017-03-09 125 views
0

我以HATEOAS开始,我有一个简单的问题。当我想通过它的ID加载一个特定的资源时,最好的方法是怎么做的?目前我请求/根路由,这条路线给我这样一个链接:HATEOAS - 刷新页面时加载资源

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

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

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

回答

1

反问 - 你从哪里得到你的ID?

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

这实际上就是HATEOAS的想法:你的API是可探索的,而你只是使用API​​返回的链接,而不是从你从资源中提取的id组装自己的链接。

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

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

然后,按照您的建议使用链接模板并从根资源(或从可从根资源轻松访问的合适子资源)中检索链接模板是个不错的主意。像这样,你可以肯定你总是有有效的链接,但是,这也意味着你必须把它们全部放在那里(或者至少是你支持深度链接的那些链接)。

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

+0

1的ID从我的客户端路线卡梅斯。 2 - 我不明白保存路线的目的。 :/ –

+1

好吧,HATEOAS的想法是你的API是可探测的,而你只是使用API​​返回的链接,而不是组装你自己的。 但是,如果您选择自行组装,那么您必须提供指向根资源中的所有资源类型的链接(或者可以从根资源轻松访问的适当子资源)。 对于表达模板链接,您可以使用HAL:http://stateless.co/hal_specification.html – Bernhard

+0

感谢您的帮助。 –

相关问题