首页 > 其他分享 >RESTFul API及幂等性

RESTFul API及幂等性

时间:2023-05-17 14:23:26浏览次数:53  
标签:状态 RESTFul API 服务器 RESTful 资源 客户端

RESTful是一种API设计风格,用于client和server之间的数据交互。它不是标准也不是协议,而是一组设计原则和约束条件。

RESTful的主要原则有

  1. 使用HTTP方法:GET查询资源,POST创建资源,PUT更新资源,DELETE删除资源。
  2. 资源(Resources)设计:将API结构化为可识别的资源,每个资源都有唯一的URL来标识。
  3. 无状态(Stateless):请求之间不保存状态,每个请求必须包含所有的信息。
  4. 层次结构(Hierarchy):资源可组成层次结构,从而形成连贯的API。
  5. 用途统一(Uniform Interface):使用标准的HTTP方法操作资源,返回标准HTTP状态码。
  6. 可缓存(Cacheable):资源的响应可以标记为可缓存,以提高系统性能。
  7. 客户端-服务器(Client-Server):RESTful API遵循C/S架构,客户端和服务器之间进行资源请求和响应。
  8. 分布式的(Layered System):客户端不需要知道服务器的结构,服务器也不需要知道数据的来源。
  9. 代码即链接(Code on Demand):允许返回可执行代码,如JavaScript。

RESTful API的主要优点是

  1. 简单易于理解,灵活扩展, loose coupling。
  2. 服务端与客户端之间解耦,服务器无状态,适合于分布式环境。
  3. 缓存支持,可以提高性能。
  4. 易于测试自动化,支持持续集成。

主流Web服务框架 wie SpringMVC 和 Express 都支持构建RESTful API。RESTful API已经被广泛应用于互联网领域,是当下主流的API设计规范。所以,理解RESTful设计原则和如何构建RESTful API对于开发高质量的Web服务至关重要。它是现代Web应用开发人员必备的一项重要技能。

 

幂等性(Idempotence)是RESTful API的一个重要特性。一个幂等的API意味着对同一个资源执行同一操作多次,服务端状态不发生变化,且返回相同的结果。

RESTful API中的幂等操作主要是

  - GET:查询资源,永远是幂等的。无论查询多少次,服务器状态不变,返回相同结果。

  - PUT:更新资源,也应该是幂等的。多次 PUT 同一资源,服务器状态不变,返回相同结果。

  - DELETE:删除资源,同样应该是幂等的。无论删除多少次,服务器状态相同,返回相同结果。

  - POST不是幂等操作,因为执行多次POST会在服务器上创建多个资源,状态和结果发生变化。

为什么RESTful API需要支持幂等性主要有以下几点原因

  1. 网络不可靠,客户端可能发送了请求但没有收到响应。此时无法判断服务端是否已经处理,如果再次发送请求就需要确保服务端状态不变。
  2. 防止重复提交。用户可能多次点击提交按钮,如果每个提交都产生影响就可能导致意外的状态变化。
  3. 支持缓存。中间代理可以直接返回缓存结果,而不需要转发请求到服务器。这需要请求是幂等的。
  4. 简化重试机制。如果请求是幂等的,客户端可以简单地重试,而不需要额外判断服务端的状态。

幂等性是RESTful系统的必要约束条件。若不满足,就不再是RESTful。所以,设计RESTful API时,对于可能造成状态变化或副作用的操作,要慎重考虑其幂等性。如果不满足幂等性,在实现上也要做相应措施以防止重复执行导致意外。幂等性是RESTful API设计的一个重要的原则和特性,理解它的含义和如何在设计中体现对构建高质量RESTful API非常重要。

 

 

标签:状态,RESTFul,API,服务器,RESTful,资源,客户端
From: https://www.cnblogs.com/ling-blog/p/17408604.html

相关文章

  • 如何调用api接口获取其中的数据
    ​ part1.API接口可以运用到的场景,主要包括以下几个方面:1. 应用程序集成:API可以使不同的应用程序相互之间进行集成,比如将某个应用程序的数据传递给另一个应用程序,或者调用另一个应用程序的功能。2. 数据共享:API可以用来共享数据,从而使不同的应用程序可以访问同一组数据......
  • apio 练习赛 t3
    题意有\(N\)个化学药品,其中有\([1,K]\)个药品内有杂质。你可以进行\(M\)次操作,第\(i\)次你可以放进去一些化学药品,然后机器会返回这里面是否有药品中有杂质。你的操作序列必须是固定的。并且你在固定策略后,有\(T\)组测试,每组测试会告诉每次操作的结果,你都要返回哪些......
  • 【Azure 应用服务】调用Azure REST API来获取 App Service的访问限制信息(Access Rest
    问题描述介绍了使用PythonSDK来获取AppService的访问限制信息,那么如何调用RESTAPI来实现呢? 问题解答如大家所知,Azure不管是SDK,门户UI,或者是PowerShell命令方式对Azure中资源进行操作,都是通过RESTAPI方式处理请求。所以,如果不知道当前操作使用的是一个接口时,最简单的方法是......
  • 万年历/节假日/日历API
    前言业务需求,需要判断节假日。简单来说,我们有一个节假日日历即可解决,但是市面上百度小米华为都有自己的日历但是就是没有API,我的需求是找一个稳定,高效,准确的日历以下调用均为CURL调用,官方支持SDK调用,考虑到成本,使用CURL我是为了加班费计算(节假日、补班)需要用到节假日的,有相同需......
  • Restful规范,序列化和反序列化,drf介绍,drf之APIView源码分析
    Restful规范:-RESTful是一种定义API接口的设计风格,AIP接口的编写规范,,尤其适用于前后端分离的应用模式中-这种风格的理念认为后端开发任务就是提供数据的,对外提供的是数据资源的访问接口,所以在定义接口时,客户端访问的URL路径就表示这种要操作的数据资源-我们可以使用......
  • Spartacus 产品明细页面的 API 设计
    当我们使用如下url访问Spartacus产品明细页面时:https://spartacus-demo.eastus.cloudapp.azure.com/electronics-spa/en/USD/product/300938/PhotosmartE317DigitalCamera能观察到下面的OCCAPIcall:https://spartacus-demo.eastus.cloudapp.azure.com:8443/occ/v2/el......
  • Restful规范,drf安装和介绍和使用,APIView源码分析
    1Restful规范#RESTful是一种定义API接口的设计风格,AIP接口的编写规范,,尤其适用于前后端分离的应用模式中这种风格的理念认为后端开发任务就是提供数据的,对外提供的是数据资源的访问接口,所以在定义接口时,客户端访问的URL路径就表示这种要操作的数据资源我们可以使用任何一个......
  • 一篇文章让你入门API测试
     什么是APIAPI是ApplicationProgrammingInterface的简写。实现了两个或多个独立系统或模块间的通信和数据交换能力。什么是API测试API测试是不同于UI级自动化测试,其主要关注在系统架构的业务逻辑层,所以其主要关注不在于UI操作或用户感观上,更重调用逻辑关系。与UI级自动化测试通......
  • OData WebAPI实践-与ABP vNext集成
    本文属于OData系列文章ABP是一个流行的ASP.NET开发框架,旧版的的ABP已经能够非常好的支持了OData,并提供了对应的OData包。ABPvNext是一个重新设计的,面向微服务的框架,提供了一些非常有用的特性,包括分页查询等但是它并不能原生支持OData,我们需要自行实现。本文......
  • Dynamic Process Creation Using API [JBPM 5.1]
    [url]http://atulkotwale.blogspot.com/2012/01/dynamic-process-creation-using-api-jbpm.html[/url]HiFriends,Asyouguysallknowjbpmhascameupwithnewversion.Ithassomebeautifulfeatures.InthispostIwillshowyouhowcanwe......