Api HATEOAS-刷新页面时加载资源

Api HATEOAS-刷新页面时加载资源,api,hateoas,Api,Hateoas,我从HATEOAS开始,我有一个简单的问题。当我想按ID加载特定资源时,最好的方法是什么?目前我向/root路由发出请求,该路由为我提供一个如下链接: { "rel": "order", "href": "http://api.com/orders/:id" } 使用模板字符串是一种很好的方法 另一个问题是:当我有10种资源类型时,我需要在根响应中放10次吗?反问-您从哪里获得ID 我假设通过爬行您的API,跟随链接-但是为什么不保存服务器返回的整个链接,而不仅仅是id 这实际上就是HATEO

我从HATEOAS开始,我有一个简单的问题。当我想按ID加载特定资源时,最好的方法是什么?目前我向/root路由发出请求,该路由为我提供一个如下链接:

{ "rel": "order", "href": "http://api.com/orders/:id" }
使用模板字符串是一种很好的方法


另一个问题是:当我有10种资源类型时,我需要在根响应中放10次吗?

反问-您从哪里获得ID

我假设通过爬行您的API,跟随链接-但是为什么不保存服务器返回的整个链接,而不仅仅是id

这实际上就是HATEOAS的想法:您的API是可探索的,您只需要使用API返回的链接,而不是根据从资源中提取的ID组装自己的ID

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

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

然后,如您所建议的,最好使用链接模板,并从根资源或可以从根资源轻松访问的适当子资源中检索链接的模板

像这样,你可以确保你总是有有效的链接,但是的,这也意味着你必须把它们都放在那里,或者至少是那些你支持的深度链接


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

1-id来自我的客户端路由。2-我不明白保存路线的目的:/HATEOAS的思想是,您的API是可探索的,您只需要使用API返回的链接,而不是组装自己的链接。但是,如果您选择自行组装,那么是的,您必须提供指向根资源中的所有资源类型的链接,或者提供指向易于从根资源访问的适当子资源的链接。对于表示模板链接,您可以使用HAL:谢谢您的帮助。