【发布时间】:2012-08-28 04:30:24
【问题描述】:
我目前正在实施一个 REST API。我有一个资源模型,其中包含各个资源之间的大量关系。
我的问题是:如何以 RESTful 方式将两个现有资源相互链接(建立关系)?
我遇到的一个解决方案是使用 LINK 和 UNLINK HTTP 动词。 API 使用者将能够使用 LINK 和以下 URI 链接两个资源:/resource1/:id1/resource2/:id2。
此解决方案的问题是缺乏对 LINK 和 UNLINK 动词的支持。 http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html 或 http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol 都没有提到动词,它们似乎在很大程度上被“遗忘”了。但是,原始 RFC 2068 确实声明它们存在。
我真的很喜欢这个解决方案。但是,由于缺乏对 LINK/UNLINK 的支持,恐怕许多 API 消费者/客户端将无法处理该解决方案。这是一个可接受的解决方案,还是有更好和/或更优雅的解决方案来链接 RESTful API 中的现有资源?
谢谢
【问题讨论】:
-
为什么不创建一个链接资源来链接这两个资源呢?
-
这是我正在考虑的另一种解决方案(在SO question 中几乎处理了它。但是,问题是对于每种类型的关系,您都必须定义一个新的资源(类型)。这过于复杂资源模型并且不是特别实用(因为您的 API 使用者必须了解更多类型的资源)。LINK/UNLINK 并没有使它过于复杂:建立关系是非常可预测的,因此更易于使用。但是,如果几乎不支持 LINK/UNLINK...