对嵌套资源上的POST和PUT进行适当的RESTful响应

时间:2010-12-10 06:11:45

标签: rest http-headers

我正在设计一个安静的api,并试图真正做到第一次正确。

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

我对在上下文中提供单个注释不感兴趣,所以我推迟了为嵌套资源实现GET。但是,将POSTing实现到comments集合并将其发送到评论uri是有意义的。

具体问题:

1)响应POST并将201和Location位置设置为父资源是否有意义?如果没有,我如何传达父位置以通知客户端上的导航选择?

2)PUT的类似问题,我如何最好地与客户沟通它应该查找父资源以查找其更新? (最好不要让客户对我的uri计划做出假设)。在200?

上,Location头是否合理

1 个答案:

答案 0 :(得分:12)

虽然我自己从未这样做,但我听说有人为此目的使用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