我以HATEOAS开始,我有一个简单的问题。当我想通过它的ID加载一个特定的资源时,最好的方法是怎么做的?目前我请求/根路由,这条路线给我这样一个链接:HATEOAS - 刷新页面时加载资源
{ "rel": "order", "href": "http://api.com/orders/:id" }
使用模板字符串是一个不错的方法?
其他问题是:当我有10种资源类型时,我需要将这10次放在根响应中吗?
我以HATEOAS开始,我有一个简单的问题。当我想通过它的ID加载一个特定的资源时,最好的方法是怎么做的?目前我请求/根路由,这条路线给我这样一个链接:HATEOAS - 刷新页面时加载资源
{ "rel": "order", "href": "http://api.com/orders/:id" }
使用模板字符串是一个不错的方法?
其他问题是:当我有10种资源类型时,我需要将这10次放在根响应中吗?
反问 - 你从哪里得到你的ID?
我假定通过抓取您的API,以下链接 - 但为什么你不只保存由服务器返回的整个链接,而不仅仅是ID?
这实际上就是HATEOAS的想法:你的API是可探索的,而你只是使用API返回的链接,而不是从你从资源中提取的id组装自己的链接。
好处是,当API更改(路径被重命名等)时,您不需要更改您的客户端代码。
但是,如果您需要保留更长时间的链接(例如,当您想以某种形式将它们加入书签),那么这可能不是一个好策略。
然后,按照您的建议使用链接模板并从根资源(或从可从根资源轻松访问的合适子资源)中检索链接模板是个不错的主意。像这样,你可以肯定你总是有有效的链接,但是,这也意味着你必须把它们全部放在那里(或者至少是你支持深度链接的那些链接)。
为表达模板链接,您可以用HAL:stateless.co/hal_specification.html
1的ID从我的客户端路线卡梅斯。 2 - 我不明白保存路线的目的。 :/ –
好吧,HATEOAS的想法是你的API是可探测的,而你只是使用API返回的链接,而不是组装你自己的。 但是,如果您选择自行组装,那么您必须提供指向根资源中的所有资源类型的链接(或者可以从根资源轻松访问的适当子资源)。 对于表达模板链接,您可以使用HAL:http://stateless.co/hal_specification.html – Bernhard
感谢您的帮助。 –