我正在为RESTful API设计自定义媒体类型,并研究了一些“标准”链接关系的类型和语义含义,以便为我的设计提供一些指导。链接关系粒度与自定义媒体类型中的精度?
为了演示这个问题,假设我有一个资源,可以执行标准读取,更改,删除方法,并且分别使用GET,PUT和DELETE的HTTP成语来实现这些方法。
我可以合理地(重新)用作RFC5023定义的“编辑”链接关系(从IANA link registry),它规定:
” ...的价值‘编辑’指定的值href属性 是可编辑成员条目的IRI。当出现在 atom:条目中时,href IRI可用于检索,更新和删除由该条目表示的资源....“
这样,用户代理可以理解具有“编辑”关系的链接将允许资源为GET,PUT和DELETEd。
但是,这里存在的问题是,如果编辑资源状态以使资源现在仅支持GET和DELETE操作,则“编辑”关系不再精确。选项A:指定另一个(复合)链接关系,该链接关系仅支持GET & DELETE,或者ii)选项B:为每个可能的状态转移指定单独的链接,并使用适当的表示允许的状态转移。后一种方法提供精确度,但似乎过于冗长。 (选项C)我可以保留“编辑”关系并接受缺乏精确性,即链接将传递GET,PUT,DELETE语义,但会尝试使用PUT的用户代理HTTP错误“405 - 方法不允许”。但是,我对这种方法并不满意,因为它暗示客户端不支持状态转换。
总之,问题是什么才是平衡链接关系普遍性和精度的最明智的方法?
交叉发布到API Craft [链接](http://groups.google.com/group/api-craft/browse_thread/thread/5d478b216f5e0322) – 2012-02-27 21:37:06