其他分享
首页 > 其他分享> > 5月6号

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