【问题标题】:Should an edit of a comment be sent through POST or PUT?是否应该通过 POST 或 PUT 发送评论编辑?
【发布时间】:2010-12-29 20:56:32
【问题描述】:

我有以下 URI:Posts/{postId}/Comments/{commentId}
我想让用户通过我的 API 编辑评论,应该使用 POST 还是 PUT 进行编辑?
一方面,POST 更新资源的内容,这样才有意义,但另一方面,PUT 将其替换为新资源。因此,如果我对 POST 的理解正确,我只需要发送需要更新的内容,而使用 PUT 我会发送整个资源。
通常在编辑表单中,无论如何都会加载整个资源,那么使用 POST 有什么意义呢?
如果我采用一种方法或另一种方法,有什么区别?

【问题讨论】:

  • POST updates the contents of a resource 过度限制了POST 的使用。有关最新定义,请参阅 http://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-12#section-7.5

标签: http rest architecture


【解决方案1】:

从我读到的内容(RESTful Web Services, published by O'Reilly)看来,您应该使用PUT 来更新现有评论。

  • PUT 用于更新和创建资源。

  • POST 也可用于创建资源。这里的区别在于POSTing 时,不需要知道要创建的资源的确切URI。 (服务将在其响应中报告新资源的 URI。)

  • POST 适用于部分更新或将信息附加到资源时; PUT 适用于完全更新(替换)资源。

  • 更新时,您可以发送部分更新,但应确保这些更新是幂等的; IE。如果您多次发送相同的更新,则更新将始终具有相同的效果。不要发送诸如“将 n 增加 1”之类的更新;而是发送更新,例如“将 n 设置为 5”。

因此,我对您的情况的建议如下:

  • 使用POST/Posts/{postId}/Comments 创建新评论,因为客户事先并不知道{commentId}

  • 使用PUT /Posts/{postId}/Comments/{commentId} 来完全更新评论(或者在向评论附加文本时可能使用POST)。

【讨论】:

    【解决方案2】:

    请看这里: PUT vs POST in REST

    【讨论】:

      猜你喜欢
      • 2023-03-07
      • 2020-05-26
      • 2012-03-11
      • 1970-01-01
      • 1970-01-01
      • 2014-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多