• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
java幼儿园小哥哥
博客园    首页    新随笔    联系   管理    订阅  订阅

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文档

 

posted @ 2019-05-06 18:41  java幼儿园小哥哥  阅读(137)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3