第一个问题,首先我们了解一下什么是幂等性
1、幂等性:
百度百科给的定义是:
在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。
幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。例如,“setTrue()”函数就是一个幂等函数,无论多次执行,其结果都是一样的更复杂的操作幂等保证是利用唯一交易号(流水号)实现。
2、REST请求中哪些是幂等操作
GET,PUT,DELETE都是幂等操作,而POST不是,下面来分析一下。
GET:请求很好理解,对资源做查询多次,此实现的结果都是一样的。
PUT:请求的幂等性可以这样理解,将A修改为B,它第一次请求值变为了B,再进行多次此操作,最终的结果还是B,与第一次执行的结果是一样的,所以PUT是幂等操作。
DELETE:DELETE同理,第一次将资源删除后,后面多次进行此删除请求,最终结果是一样的将资源删除掉了。
POST:不是幂等操作,因为一次请求添加一份新资源,二次请求则添加了两份新资源,多次请求会产生不同的结果,因此POST不是幂等操作。
3、在使用中,我们可以根据幂等性区分POST与PUT的使用
也就是说
如果是更新,并不会产生新的数据,新的数据会覆盖老的数据,用put
如果是创建,会产生新的数据,则用post