我有以下URI:Posts/{postId}/Comments/{commentId}
我想让用户通过我的API编辑评论,编辑是用POST还是PUT完成的?
一方面,POST更新资源的内容以使其有意义,但另一方面PUT将其替换为新的内容。因此,如果我正确理解POST,我只需要发送需要更新的内容,并且使用PUT我发送整个资源
通常在编辑表单中,无论如何都会加载整个资源,那么使用POST有什么意义呢?
如果我采取一种方法或另一种方法,有什么区别?
答案 0 :(得分:2)
根据我的阅读(RESTful Web Services, published by O'Reilly),您似乎应该使用PUT
更新现有评论。
PUT
旨在用于更新和创建资源。
POST
也可用于创建资源。这里的区别在于,当POST
时,您不需要知道要创建的资源的确切URI。 (该服务将在其响应中报告新资源的URI。)
POST
适用于部分更新,或者在向资源附加信息时; PUT
适用于资源的完整更新(替换)。
更新时,可以发送部分更新,但您应该确保这些更新是幂等的;即。如果您多次发送相同的更新,则更新将始终具有相同的效果。不要发送诸如“将 n 增加1”的更新;相反,发送更新,例如“将 n 设置为5”。
因此,我对你案件的建议如下:
使用POST
与/Posts/{postId}/Comments
创建新评论,因为客户提前不知道{commentId}
。
使用PUT
/Posts/{postId}/Comments/{commentId}
完全更新评论(或者在向其添加文字时POST
)。
答案 1 :(得分:1)
见这里: PUT vs POST in REST