看到了一篇讲幂等性的文章,我认为把幂等性说得十分清楚。如果你像我一样对幂等性还有困惑,可以仔细看下这篇文章。原文地址:https://www.restapitutorial.com/lessons/idempotency.html

【英文原文】

Idempotence is a funky word that often hooks people. Idempotence is sometimes a confusing concept, at least from the academic definition.

From a RESTful service standpoint, for an operation (or service call) to be idempotent, clients can make that same call repeatedly while producing the same result. In other words, making multiple identical requests has the same effect as making a single request. Note that while idempotent operations produce the same result on the server (no side effects), the response itself may not be the same (e.g. a resource's state may change between requests).

The PUT and DELETE methods are defined to be idempotent. However, there is a caveat on DELETE. The problem with DELETE, which if successful would normally return a 200 (OK) or 204 (No Content), will often return a 404 (Not Found) on subsequent calls, unless the service is configured to "mark" resources for deletion without actually deleting them. However, when the service actually deletes the resource, the next call will not find the resource to delete it and return a 404. However, the state on the server is the same after each DELETE call, but the response is different.

GET, HEAD, OPTIONS and TRACE methods are defined as safe, meaning they are only intended for retrieving data. This makes them idempotent as well since multiple, identical requests will behave the same.

【为了方便,我翻译一下】

“幂等性”是一个经常引人注意的时髦时汇。同时“幂等性”有时也是一个令人很困惑的慨念(至少从其学术定义来看)。

从RESTful服务的角度来说,如果一个operation(或service call)是幂等的,那么客户端以相同的方式重复调用服务就应该产生相同的结果。换句话说,发出多个相同的请求,与发出单个请求具有相同的效果。需要注意的是,虽然幂等性操作会在服务器端产生相同的结果(没有副作用),但操作的response本身可能并不相同(比如资源状态会在不同请求之间发生变化)。

PUT和DELETE方法被定义为幂等的。DELETE操作要特别注意的一个问题是,DELETE操作成功通常会返回200(OK)或204(No Content),但后续相同的DELETE操作可能会返回404(Not Found),除非服务被配置成只标记资源的删除状态而不是真正地删除资源。但是,当服务实际上已删除指定资源时,后续DELETE调用就会找不到该资源,并返回404。多次DELETE调用之后,服务器端的状态是相同的,但返回可以不同。

GET、HEAD、OPTIONS和TRACE方法被定义成安全的,意味着它们只是为了获取数据,多个相同请求时服务器端的表现是相同的,所以它们是天然幂等的。

[感想]

幂等性不同于返回值。

[搬运]什么叫幂等性?相关推荐

  1. 高并发下的接口幂等性解决方案

    一.背景 我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果. 例如: 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果. 我们发起一笔付款请求,应该只扣用 ...

  2. 高并发下接口幂等性技术方案

    一.背景 我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果. 例如1. 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果:2. 我们发起一笔付款请求,应该 ...

  3. 【题解搬运】PAT_L1-009 N个数求和

    从我原来的博客上搬运.原先blog作废. (伪)水题+1,旨在继续摸清这个blog(囧 题目 就是求N个数字的和.麻烦的是,这些数字是以有理数"分子/分母"的形式给出的,你输出的和 ...

  4. kafka异步推送设置重试_一篇文章了解 Kafka 幂等性的原理及实践

    01 幂等性如此重要 Kafka作为分布式MQ,大量用于分布式系统中,如消息推送系统.业务平台系统(如结算平台),就拿结算来说,业务方作为上游把数据打到结算平台,如果一份数据被计算.处理了多次,产生的 ...

  5. 分布式环境下,互斥性与幂等性问题,分析与解决思路

    欢迎关注方志朋的博客,回复"666"获面试宝典 随着互联网信息技术的飞速发展,数据量不断增大,业务逻辑也日趋复杂,对系统的高并发访问.海量数据处理的场景也越来越多.如何用较低成本实 ...

  6. 高并发下如何保证接口的幂等性?

    前言 接口幂等性问题,对于开发人员来说,是一个跟语言无关的公共问题.本文分享了一些解决这类问题非常实用的办法,绝大部分内容我在项目中实践过的,给有需要的小伙伴一个参考. 不知道你有没有遇到过这些场景: ...

  7. 高并发下如何保证接口的幂等性

    前言 接口幂等性问题,对于开发人员来说,是一个跟语言无关的公共问题.本文分享了一些 ,绝大部分内容我在项目中实践过的,给有需要的小伙伴一个参考. 不知道你有没有遇到过这些场景: 有时我们在填写某些 f ...

  8. 阿里一面:如何保障消息100%投递成功、消息幂等性?

    点击关注公众号,Java干货及时送达来源:toutiao.com/i6672235084336071179 前言 我们小伙伴应该都听说够消息中间件MQ,如:RabbitMQ,RocketMQ,Kafk ...

  9. Spring Boot 实现接口幂等性的 4 种方案!还有谁不会?

    点击关注公众号,Java干货及时送达 作者:超级小豆丁 链接:mydlq.club/article/94 一.什么是幂等性 幂等是一个数学与计算机学概念,在数学中某一元运算为幂等时,其作用在任一元素两 ...

最新文章

  1. (转) eclipse项目中.classpath文件详解
  2. CORE协议的MATLAB仿真
  3. wordpress搭建博客 主题推荐 2019
  4. TClientDataSet使用要点
  5. linux telnet.class,Linux telnet简单实用方法
  6. Spring boot + mybatis + oracle代码生成器
  7. PDE抛物型方程数值解法总结与例题分析
  8. VB 二进制数组与十六进制字符串相互转换
  9. java 编辑器 开发工具_好的程序员有哪些实用的HTML5开发工具可以选择?
  10. python属性管理(1):基础
  11. Redis的安装(windows)
  12. 屏幕取色器(Qt实现)(放大镜,RGB显示,智能调节)
  13. 高级Java程序员必备:《IDEA问题库》常见问题及解决方案,提升开发效率(JAVA 小虚竹)
  14. 微信连wifi portal验证
  15. c++ 计算cpu占用率
  16. JMeter基础系列:接口响应时间
  17. 低空急流负风切变对风机的影响
  18. 【文末有福利! 】刷脸开锁:背后的技术绝招
  19. html5绘制好看的时钟,利用纯html5绘制出来的一款非常漂亮的时钟
  20. 深度学习Deep Learning 资料大全

热门文章

  1. servlet过滤器中的注解配置详解
  2. bootstrap-table、antd-table组件(react)实现首行、首列固定的表格
  3. Docker启动常用容器命令及配置说明
  4. 信联征信参展国际金融博览会,信用科技赋能金融业
  5. PNG 逐行扫描和隔行扫描(转)
  6. 日更 - 摄影学习第五课:延时摄影
  7. 物理建模——组件图、部署图
  8. Swift学习之:设置渐变色
  9. cocoapods 在product没有显示的问题
  10. C语言:虚拟驱动安装VS2010学习版