我正在设计一个安静的api,并试图真正做到第一次正确。
我已经定义了一些嵌套资源(博客文章中的评论),并且该选择反映了评论嵌套在mongo中的博客帖子文档中的事实。
我对在上下文中提供单个注释不感兴趣,所以我推迟了为嵌套资源实现GET。但是,将POSTing实现到comments集合并将其发送到评论uri是有意义的。
具体问题:
1)响应POST并将201和Location位置设置为父资源是否有意义?如果没有,我如何传达父位置以通知客户端上的导航选择?
2)PUT的类似问题,我如何最好地与客户沟通它应该查找父资源以查找其更新? (最好不要让客户对我的uri计划做出假设)。在200?
上,Location头是否合理答案 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