5月6号
作者:互联网
gateway 网关,方法,通道
一、Representational State Transfer表述性状态转移
什么是REST API
一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。
它主要用于客户端和服务器交互类的软件。
基于这个风格设计的软件可以更简洁,更有层次,更易于缓存等机制。
原则条件
REST指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是RESTful
Web应用程序最重要的REST原则是,客户端和服务器之间的交互在请求之间是无状态的。
定义规则
REST中的资源所指的不是数据,而是数据和表现形式的组合,比如“最新访问的10位会员”和“最活跃的10位会员”在数据上可能有重叠或者完全相同,
而由于他们的表现形式不同,所以被归为不同的资源,这也就是为什么REST的全名是“表述性状态转移”的原因。
资源标识符就是URL(Uniform Resource Identifier统一资源标识符),不管是图片,Word还是视频文件,甚至是一种虚拟的服务,也不管你是XML(标准通用标记语言下的一个子集)
格式、txt文件格式还是其他文件格式,全部通过URL对资源进行唯一的标识。
一、
REST从资源的角度来观察整个网络,分布在各处的资源由URL确定,而客户端的应用通过URL来获取资源的表示方式。
“设计良好的网络应用表现为一系列的网页,这些网页可以看作的虚拟的状态机,用户选择这些链接导致下一网页传输到用户端展现给使用的人,而这正代表了状态的转变”。
REST是设计风格而不是标准。REST通常基于使用HTTP,URL,和XML以及HTML这些现有的广泛流行的协议和标准。
资源是由URL来指定。
对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。
通过操作资源的表现形式来操作资源。
资源的表现形式则是XML或者HTML,取决于读者是机器还是人,是消费web服务的客户软件还是web浏览器。当然也可以是任何其他的格式。
二、
REST顾名思义 : Representational State Transfer(表述化状态转移)
rest的两个基本概念
1.
资源(Resource):将信息抽象为资源,任何能够命名的信息(包括数据的功能)都能作为一个资源,一张图片,一份文档,一个服务(如上传图片),一个其他资源的集合等。
资源是到一组实体的概念上的映射,而不是在特定时刻与映射相关联的实体的映射。例如,“最新上传的图片”是一个值经常变化的映射,但是“2055/1/9上传的图片”的映射是静态。
它们是截然不同的资源,即使某一时刻它们可能会映射到相同值的集合。
2.
表述(Representation) : 一个资源当前或预期的状态,资源是一个随时间变化的函数,该函数将时间t映射到一个实体或值的集合,
集合中的值可能是资源的表述。REST组件通过URL来获得资源的表述并对资源执行操作,并在组件间传递该表述。
举购物网站系统的例子,products通过加入购物车到orders,经过付款订单到purchase,然后到delivery。其中products和orders是资源,可以通过/products?color=green和/orders/2007/11表示;而purchase和delivery是资源products和orders某一时间的状态。应用程序如同资源和表述组成的虚拟的状态机,通过不断的获取资源的表述来转变应用程序的状态,即所谓的表述化状态转移。
三、
Swagger
1.
swagger注解
swagger通过注解表明该接口会生成文档,包括接口名、请求方法、参数、返回信息等等。
@Api:修饰整个类,描述Controller的作用。
@ApiOperation:描述一个类的一个方法,或者说一个接口。
@ApiParam:单个参数描述。
@ApiModel:用对象来接收参数。
@ApiProperty:用对象接收参数时,描述对象的一个字段。
@ApiResponse:HTTP响应其中1个描述。
@ApiResponses:HTTP响应整体描述。
@ApiIgnore:使用该注解忽略整个API。
@ApiError:发生错误的返回信息。
@ApiImplicitParam:一个请求数。
@ApiImplicitParams:多个请求参数。
----------------------------------------------------------
@Api(tags="xxx模块说明") 作用在模块类上。
@ApiOperation("xxx接口说明") 作用在接口方法上
@ApiModel("xxxPOJO说明") 作用在模型上:如VO、BO
@ApiModelProperty(value="xxx属性说明",hidden=true) 作用在类方法和属性上,hidden设置为true可以隐藏该属性
@ApiParam("")
---------------------------------------------------------
@Configuration注解该类,等价于XML中配置beans;
@Bean标注方法等价于XML中配置bean。
@EnableSwagger2表示开启Swagger:
@SpringBootApplication @EnableSwagger2 public class SpringbootSwagger2Application {
2.
手写Api文档的几个痛点:
a:文档需要更新的时候,需要再次发送一份给前端,也就是文档更新交流不及时。
b:接口返回结果不明确。
c:不能直接在线测试接口,通常需要使用工具。
d:接口文档太多,不好管理。
Swagger也就是为了解决整个问题,当然不能说Swagger就一定是完美的,当然也有缺点,最明显的就是代码移入性比较强。
依赖---Swagger配置类---Restful接口---Swagger2文档
标签:,URL,表述,接口,文档,REST,资源 来源: https://www.cnblogs.com/wym591273/p/10821346.html