千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > 如何理解RESTful API的幂等性?

如何理解RESTful API的幂等性?

来源:千锋教育
发布人:wjy
时间: 2022-09-22 15:24:29 1663831469

  1. 什么是幂等性?

  HTTP 幂等方法,是指无论调用多少次都不会有不同结果的HTTP方法。不管你调用一次,还是调用一百次,一千次,结果都是相同的。 GET /tickets # 获取ticket列表 GET /tickets/12 # 查看某个具体的ticket POST /tickets # 新建一个ticket PUT /tickets/12 # 更新ticket 12 PATCH /tickets/12 # 更新ticket 12 DELETE /tickets/12 # 删除ticekt 12

  2. HTTP GET方法HTTP GET方法,用于获取资源,不管调用多少次接口,结果都不会改变,所以是幂等的。 GET /tickets # 获取ticket列表 GET /tickets/12 # 查看某个具体的ticket 只是查询数据,不会影响到资源的变化,因此我们认为它幂等。值得注意,幂等性指的是作用于结果而非资源本身。怎么理解呢?

  例如,这个HTTP GET方法可能会每次得到不同的返回内容,但并不影响资源。 可能你会问有这种情况么?当然有咯。

  例如,我们有一个接口获取当前时间,我们就应该设计成 GET /service_time # 获取服务器当前时间 它本身不会对资源本身产生影响,因此满足幂等性。

如何理解RESTful API的幂等性?

  3. HTTP POST方法HTTP POST方法是一个非幂等方法,因为调用多次,都将产生新的资源。 POST /tickets # 新建一个ticket因为它会对资源本身产生影响,每次调用都会有新的资源产生,因此不满足幂等性。

  4. HTTP PUT方法HTTP PUT方法是不是幂等的呢?

  我们来看下 PUT /tickets/12 # 更新ticket 12 因为它直接把实体部分的数据替换到服务器的资源,我们多次调用它,只会产生一次影响,但是有相同结果的 HTTP 方法,所以满足幂等性。

  5. HTTP PATCH方法HTTP PATCH方法是非幂等的。HTTP POST方法和HTTP PUT方法可能比较好理解,但是HTTP PATCH方法只是更新部分资源,怎么是非幂等的呢?

  因为,PATCH提供的实体则需要根据程序或其它协议的定义,解析后在服务器上执行,以此来修改服务器上的资源。换句话说,PATCH请求是会执行某个程序的,如果重复提交,程序可能执行多次,对服务器上的资源就可能造成额外的影响,这就可以解释它为什么是非幂等的了。 可能你还不能理解这点。我们举个例子PATCH /tickets/12 # 更新ticket 12 此时,我们服务端对方法的处理是,当调用一次方法,更新部分字段,将这条ticket记录的操作记录加一,这次,每次调用的资源是不是变了呢,所以它是有可能是非幂等的操作。

  6. HTTP DELETE方法HTTP DELETE方法用于删除资源,会将资源删除。 DELETE /tickets/12 # 删除ticekt 12 调用一次和多次对资源产生影响是相同的,所以也满足幂等性。

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT