如果操作看起来是幂等的,请进行PUT或POST

时间:2016-12-10 01:00:41

标签: http post put http-method

我想创建一个类似于此的应用程序 - 客户端(由用户标识标识)向服务器发送REST API调用。服务器查询数据库以检查此用户之前是否有徽章。如果有,它什么都不做。否则,它会在数据库中标记用户被授予徽章并向用户发送电子邮件。

PUT /用户//徽章/ POST /用户//徽章/

我的问题是我应该在这里使用哪种http方法? PUT还是POST?

在某种意义上它是幂等的,即电子邮件仅在第一个请求中发送,后续请求除了查询数据库之外不执行任何操作。

在这种情况下,书籍推荐使用哪种http方法?

1 个答案:

答案 0 :(得分:0)

如果它是幂等的,那么它通常应该是PUT,从RFC 7231, section 4.3.4可以看出:

  

POST和PUT方法的根本区别在于      通过封闭表示的不同意图突出显示。      POST请求中的目标资源旨在处理      根据资源自身的语义封闭表示,      而PUT请求中的封闭表示定义为      替换目标资源的状态。因此,PUT的意图      对于中间人来说是幂等的和可见的,即使是确切的      效果仅由原始服务器知道。