【问题标题】:Proper RESTful response to POST and PUT on nested resources对嵌套资源上的 POST 和 PUT 进行适当的 RESTful 响应
【发布时间】:2010-12-10 06:11:44
【问题描述】:

我正在设计一个宁静的 API,并尝试第一次真正做到正确。

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

我对脱离上下文为单个 cmets 提供服务不感兴趣,因此我推迟了为嵌套资源实现 GET。但是,对 cme​​ts 集合执行 POST 并将对评论 uri 执行 PUT 是有意义的。

具体问题:

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

2) PUT 的类似问题,我如何最好地与客户端沟通它应该查看父资源以找到其更新? (最好不需要客户对我的 uri 方案做出假设)。 Location 标头在 200 上是否合理?

【问题讨论】:

    标签: rest http-headers


    【解决方案1】:

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

    在您的 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”方法。
    猜你喜欢
    • 1970-01-01
    • 2013-05-29
    • 1970-01-01
    • 2017-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多