zoukankan      html  css  js  c++  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文档

  • 相关阅读:
    docker mysql 主从配置
    在docker上安装运行mysql实例
    mongodb分片集搭建
    mongodb片健的选取及更改
    MySQL 5.7的多源复制
    percona-toolkit使用教程
    Python基础操作-集合
    nginx location 在配置中的优先级
    OpenResty知识汇集
    开源分布式日志框架
  • 原文地址:https://www.cnblogs.com/wym591273/p/10821346.html
Copyright © 2011-2022 走看看