对POST和PUT嵌套资源的正确RESTful响应

对POST和PUT嵌套资源的正确RESTful响应,rest,http-headers,Rest,Http Headers,我正在设计一个restful api,并试图第一次真正做到这一点 我已经定义了一些嵌套资源(博客文章中的评论),这个选择反映了评论嵌套在mongo的博客文章文档中的事实 我对断章取义地提供单个注释不感兴趣,所以我推迟了实现嵌套资源的GET。但是,实现向comments集合发布并将其放入CommentURI是有意义的 具体问题: 1) 用设置为父资源的201和位置头来响应帖子有意义吗?如果没有,我如何告知父位置以告知客户机上的导航选择 2) 对于PUT,类似的问题是,我如何最好地与客户机沟通,让客

我正在设计一个restful api,并试图第一次真正做到这一点

我已经定义了一些嵌套资源(博客文章中的评论),这个选择反映了评论嵌套在mongo的博客文章文档中的事实

我对断章取义地提供单个注释不感兴趣,所以我推迟了实现嵌套资源的GET。但是,实现向comments集合发布并将其放入CommentURI是有意义的

具体问题:

1) 用设置为父资源的201和位置头来响应帖子有意义吗?如果没有,我如何告知父位置以告知客户机上的导航选择


2) 对于PUT,类似的问题是,我如何最好地与客户机沟通,让客户机寻找父资源来定位其更新?(最好客户不必对我的uri方案做出假设)。200上的位置标题合理吗?

虽然我自己从来没有这样做过,但我听说有人为此使用内容位置标题。内容位置用于标识由返回实体表示的资源的位置

在PUT和POST的情况下,您可能实际上不想返回整个博客文章,因此我不确定返回内容位置标题的有效性,即使您没有在响应中返回表示

话虽如此,我想不出任何负面影响,因此我建议如下:

PUT /Blog/343/Comment/23
=>
200 OK
Content-Location: /Blog/343


POST /Blog/343/Comments
=>
201 Created
Location: /Blog/343/Comment/24
Content-Location:  /Blog/343

棒极了!我们将其称为“极简表示”=o)@BnWasteland对于使用PUT更新更大资源片段的情况,我一直称之为“mini-PUT”方法。