【发布时间】:2012-10-22 19:25:57
【问题描述】:
我正在设计一个 REST api 并尽可能地保持 RESTful。我想将HATEOAS 合并到 json 响应中。
将 URL 添加到相关资源很容易,但对用于这些链接的结构进行了一些讨论。
我发现很多文章都使用了从 ATOM 提要中借用的结构:
"links": [
{"rel": "self", "href":"http://example.org/entity/1"},
{"rel": "friends", "href":"http://example.org/entity/1/friends"}, ...
]
这引发了一些问题:
-
为什么使用数组作为容器?据我认识的一位 javascript 开发人员说,将链接作为对象的属性访问链接会更容易。例如:
"self": { "href":"http://example.org/entity/1" }, /* (facebook uses this) */ "friends": { "href":"http://example.org/entity/1/friends", "type": "..."} -
是否有一个通用的 json 结构(除了再次适配 atom)来描述资源属性中的引用?(例如消息的发送者)。
引用可能应该再次解析为 url,但是包含简单 id 会很糟糕吗?有点像:
"sender": { "id": 12345, "href": "resource-uri" }
我的想法是,虽然 HATEOAS 使客户不需要很多知识来使用 API,但我有点不愿意消除使用这些知识的可能性(比如通过在不首先查找用户的情况下构建链接客户端)。
【问题讨论】: