Halo
发布于 2022-06-14 / 93 阅读 / 0 评论 / 0 点赞

http幕等性

幂等性

HTTP方法的幂等性是指一次和多次请求某一个资源应该具有同样的影响

哪些是幕等性操作

在HTTP规范中:

  • GET 方法用于获取资源,不应对资源有影响,所以是幂等的
  • DELETE 方法用于删除资源,对资源有影响,但它应该满足幂等性
  • PUT 方法用户创建或更新的资源, 对同一URI进行多次PUT的副作用和一次PUT是相同的;因此,PUT方法具有幂等性
  • 两次相同的POST请求会在服务器端创建两份资源,它们具有不同的URI;所以,POST方法不具备幂等性

如何实现幕等性操作

  • 全局唯一id, 可以实现 DELETE 的幕等性
  • 乐观锁/悲观锁, 可以实现 PUT 的幕等性. 乐观锁可以用version 来实现.
  • 状态机制, 可以实现 DELETE/PUT/POST 的幕等性. 如果状态机已经处于下一个状态,这时候来了一个上一个状态的变更,理论上是不能够变更的,这样的话,保证了幂等性
  • token令牌, 可以实现 DELETE/PUT/POST 的幕等性. 每次操作前, 客户端先申请一个token 令牌, 然后操作资源的时候带上token 令牌. 服务端收到token 和操作的时候, 会核对token 是否存在, 如果存在就执行, 否则拒绝. 如此保证幕等性.

评论