嵌套资源的POST和PUT请求的合适RESTful响应

9
我正在设计一个restful api,并尝试第一次真正正确地完成它。
我定义了一些嵌套资源(博客文章中的评论),这个选择反映了评论在mongo中嵌套在博客文章文档中的事实。
我不想提供上下文之外的单个评论,因此我推迟了为嵌套资源实现GET。然而,实现向评论集合POST和PUT到评论uri是有意义的。
具体问题:
1)响应POST并将Location标头设置为父资源是否有意义?如果不是,如何传达父位置以通知客户端导航选择?
2)PUT的类似问题,如何最好地向客户端传达它应该查找父资源来定位其更新?(最好不让客户端对我的uri方案做出假设)。200上的Location标头是否合理?
1个回答

13

虽然我自己从未这样做过,但我听说有人使用Content-Location头来实现这个目的。 Content-Location用于标识表示返回实体的资源位置。

对于您的PUT和POST,您可能实际上并不想返回整个博客文章,因此我不确定在响应中返回Content-Location头是否有效。

话虽如此,我想不出任何负面影响,所以这是我的建议:

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
@BnWasteland 对于使用PUT更新较大资源的一部分的情况,我一直称之为“mini-PUT”方法。 - Darrel Miller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接