我想创建一个类似于此的应用程序 - 客户端(由用户标识标识)向服务器发送REST API调用。服务器查询数据库以检查此用户之前是否有徽章。如果有,它什么都不做。否则,它会在数据库中标记用户被授予徽章并向用户发送电子邮件。
PUT /用户//徽章/ POST /用户//徽章/
我的问题是我应该在这里使用哪种http方法? PUT还是POST?
在某种意义上它是幂等的,即电子邮件仅在第一个请求中发送,后续请求除了查询数据库之外不执行任何操作。
在这种情况下,书籍推荐使用哪种http方法?
答案 0 :(得分:0)
如果它是幂等的,那么它通常应该是PUT,从RFC 7231, section 4.3.4可以看出:
POST和PUT方法的根本区别在于 通过封闭表示的不同意图突出显示。 POST请求中的目标资源旨在处理 根据资源自身的语义封闭表示, 而PUT请求中的封闭表示定义为 替换目标资源的状态。因此,PUT的意图 对于中间人来说是幂等的和可见的,即使是确切的 效果仅由原始服务器知道。