我从HATEOAS开始,我有一个简单的问题。当我想通过其ID加载特定资源时,最好的方法是什么?目前我对/ root路由请求,这条路由给我一个这样的链接:
{ "rel": "order", "href": "http://api.com/orders/:id" }
使用模板字符串是一种不错的方法吗?
其他问题是:当我有10种资源类型时,我需要将这10次放在root响应中吗?
答案 0 :(得分:1)
反问题 - 你从哪里得到你的ids?
我假设通过您的API抓取链接 - 但为什么不保存服务器返回的整个链接,而不仅仅是ID?
这实际上是HATEOAS的想法:您的API是可以被攻击的,而您只是使用API返回的链接,而不是从您从资源中提取的ID中组装自己的API。
优点是当API更改(路径重命名等)时,您不需要更改客户端代码。
但如果您需要将链接保留更长时间(例如,当您想要以某种形式为其添加书签时),这可能不是一个好策略。
然后,如您所建议的那样,使用链接模板是一个好主意,并从根资源(或从可从根资源轻松访问的合适子资源)中检索链接的模板。
像这样你可以确定你总是有有效的链接,但是,这也意味着你必须将它们全部放在那里(或者至少是你支持深层链接的那些)。
要表达模板化链接,您可以使用HAL:stateless.co/hal_specification.html