swagger2是什么(swagger2ui)

swagger2是什么(swagger2ui)在前后端分离开发的过程中 前端和后端需要进行 api 对接进行交互 就需要一个 api 规范文档 方便前后端的交互 但 api 文档不能根据代码的变化发生实时动态的改变 这样后端修改了接口 前端不能及时获取最新的接口 导致调用出错 需要手动维护 api 文档 加大了开发的工作量和困难 而 swagger 的出现就是为了解决这一系列的问题 swagger 是一套基于 OpenAPI 规范构建的开源工具

大家好,我是讯享网,很高兴认识大家。



在前后端分离开发的过程中,前端和后端需要进行api对接进行交互,就需要一个api规范文档,方便前后端的交互,但api文档不能根据代码的变化发生实时动态的改变,这样后端修改了接口,前端不能及时获取最新的接口,导致调用出错,需要手动维护api文档,加大了开发的工作量和困难,而swagger的出现就是为了解决这一系列的问题。

swagger是一套基于OpenAPI规范构建的开源工具,使用RestApi
1、代码变,文档变
2、跨语言,支持多种语言
3、swagger-ui 呈现出来的是一份可交互式的API文档,可以直接在文档页面尝试API的调用
4、可以将文档规范导入相关工具(postman、soapui),这些工具将会为我们自动地创建自动化测试

补充:

swagger主要包含了以下三个部分:

  • swagger editor:基于浏览器的编辑器,我们可以使用它编写我们OpenApi规范(yaml或者json配置)
  • Swagger UI:他会将我们编写的OpenApi规范呈现为交互式的API文档,后文我将使用浏览器来查看并且操作我们的RestApi
  • Swagger Codegen:它可以通过OpenApi规范定义的任何API生成服务器存根和客户端SDK来简化构建过程

使用swagger就是把相关信息存储在它定义的描述文件里面(yml或json格式),再通过维护这个描述文件可以去更新接口文档,以及生成各端代码

使用swagger时如果碰见版本更新迭代时,只需要更改swagger的描述文件即可,但是在频繁的更新项目版本时很多开发人员认为即使修改描述文件(yml或json文件)也是一定的工作负担,久而久之就直接修改代码,而不去修改描述文件了,这样基于描述文件生成接口文档也失去了意义。
Marty Pitt编写了一个基于spring的组件,Spring-fox就是根据这个组件发展而来的全新项目;
Spring-fox是根据代码生成接口文档,所以正常的进行更新项目版本,修改代码即可,而不需要跟随修改描述文件(yml或json文件);
spring-fox利用自身AOP特性,把swagger集成进来,底层还是Swagger,但是使用起来却方便很多,所以在实际开发中,都是直接使用spring-fox。

 

讯享网

3、启动类中添加注解
@enableSwagger2:是springfox提供的一个注解,代表swagger2相关技术开启,会扫描当前类所在包,以及子包中所有的类型中的注解,做swagger文档的定值
4、编写一个简单api接口

讯享网

5、启动项目,并在浏览器输入进行swagger-ui界面访问


讯享网

4.1 swagger的基础信息配置–>config类

 

4.2 swagger扫描包配置

讯享网

4.3 配置是否开启swagger

 

需求:开发和测试环境中开启swagger,其他环境不开启

讯享网

4.3 swagger分组配置

每个组就是一个docket实例,多个组就是创建多个docket的实例

 

注意:

讯享网

swagger注解主要是用来给swagger生成的接口文档说明用的

5.1 @Api

  • @Api:是类上注解,控制整个类生成接口信息的内容
    • tags:类的名称,可以有多个值,多个值表示多个副本,在UI视图中就显示几个控制器访问菜单
    • description:描述,已过时

5.2 @ApiOperation

  • @ApiOperation:方法的说明,value值必须提供
    • value:说明方法的作用
    • notes:方法的备注说明

5.3 @ApiParam

  • @ApiParam:可以作用于方法参数和成员变量
    • name:参数别名
    • value:参数的描述
    • required:是否必须需要

5.4 @ApiIgnore

  • @Apilgnore:忽略,当前注解描述的方法或类型,不生成api文档

5.5 @ApiImplicitParam和@ApiImplicitParams

  • @ApiImplicitParam:使用在方法上,描述方法的单个参数
    • name:参数名称
    • value:描述
    • required:是否必要参数
    • paramType:参数类型
    • dataType:数据类型
  • @ApiImplicitParams:使用在方法上,描述方法的一组参数
    • value:是@ApiImplicitParam类型的数组

5.6 @ApiModel和@ApiModelProperty

  • @ApiModel:描述一个实体类型,这个实体类型如果成为任何一个生成api帮助文档方法的一个返回值类型的时候,此注解被解析
    • value:自定义实体
    • description:详细描述
  • @ApiModelProperty:实体类属性描述
    • name:字段别名
    • value:字段描述
    • required:是否是必须字段
    • example:示例数据
    • hidden:是否隐藏数据

5.7 @ApiResponse和@ApiResponses

@ApiResponses、@ApiResponse方法返回值的说明

  • @ApiResponses:方法返回对象的说明
  • @ApiResponse:每个参数的说明
    • code:数字,例如:300
    • message:信息,例如:”请求参数没填好”
    • response:抛出异常的类

5.8 其他注解

  • @Authorization:声明要在资源或操作上使用的授权方案
  • @AuthorizationScope:描述OAuth2授权范围
  • @ResponseHeader:表示可以作为响应的一部分提供的标头
  • @ApiProperty:描述POJO对象中的属性值
  • @ApiError:接口错误所返回的信息

  1. 我们可以通过swagger给一些比较难理解的属性或接口,增加注释信息
  2. 接口文档实时更新
  3. 可以在线测试
  4. 在正式发布的时候,关闭swagger,出于安全考虑,而且节省内存

小讯
上一篇 2025-05-08 21:38
下一篇 2025-05-26 11:27

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/152083.html