博客
关于我
Swagger快速入门教程笔记
阅读量:423 次
发布时间:2019-03-06

本文共 4865 字,大约阅读时间需要 16 分钟。

Spring Boot 2.x 项目中整合 Swagger 接口文档生成工具

随着前后端分离式开发的流行,传统的 JSP 开发逐渐被 Vue、Angular、React 等前端框架取代,而后端则通过接口返回 JSON 数据供前端调用,省去了视图跳转的复杂过程。然而,这也带来了一个新的挑战:后端程序员需要撰写接口文档来指导前端开发人员,这无疑是一项耗时费力的工作。

Swagger:接口文档的自动化解决方案

Swagger(现已更名为 OpenAPI)是一款强大的接口文档生成工具,它能够根据程序代码自动生成接口文档。通过 Swagger,我们可以轻松创建一个在线接口文档,方便前端开发人员快速了解和使用后端接口。以下将详细介绍如何在 Spring Boot 2.x 项目中整合 Swagger。


一、安装 Swagger 依赖

首先,我们需要在项目中引入 Swagger 的 Maven 依赖包。Swagger 提供了两套主要的版本:Swagger 1.5 和 Swagger 2.0。为了与 Spring Boot 2.x 的版本兼容,我们选择 Swagger 2.x 的最新版本。

io.springfox
springfox-swagger2
3.0.0
io.springfox
springfox-swagger-ui
3.0.0

此外,由于 Swagger 依赖较多,为了解决某些运行时异常,可以选择以下版本:

io.swagger
swagger-annotations
1.5.21
io.swagger
swagger-annotations
io.swagger
swagger-models
1.5.21
io.swagger
swagger-models
io.springfox
springfox-swagger-ui
2.9.2

二、启用 Swagger

在引入 Swagger 依赖后,我们需要通过注解开启 Swagger 功能。创建一个新的配置类,并在类上注解 @EnableSwagger2

@Configuration@EnableSwagger2public class SwaggerConfig {    // 可以添加多个 Swagger 文档配置,用于不同的接口分组}

启用 Swagger 后,访问 http://localhost:8080/swagger-ui.html 即可查看接口文档页面。


三、接口文档的主要组成部分

Swagger 生成的接口文档主要包含以下四个部分:

  • 分组信息:通过 @ApiTags 注解,可以为接口分组,方便管理和查找。
  • 分组描述信息:可以通过 apiInfo() 方法配置分组的描述、联系方式等信息。
  • 接口描述信息:每个接口都可以通过 @ApiOperation 注解添加详细的描述,包括接口标题和说明。
  • 实体类信息:通过 @ApiModel@ApiModelProperty 注解,可以为实体类添加详细的文档描述。

  • 四、初始化分组

    为了实现自定义分组,我们需要在配置类中提供一个 Docket 实例到 IOC 容器中。以下是一个简单的分组配置示例:

    @Configuration@EnableSwagger2public class SwaggerConfig {    @Bean    public Docket docket() {        return new Docket(DocumentationType.SWAGGER_2)                .groupName("张涵哲的分组");    }}

    此外,如果需要多个分组,可以通过在配置类中定义多个 Docket 实例:

    @Configuration@EnableSwagger2public class SwaggerConfig {    @Bean    public Docket mainGroup() {        return new Docket(DocumentationType.SWAGGER_2)                .groupName("主分组");    }    @Bean    public Docket subGroup() {        return new Docket(DocumentationType.SWAGGER_2)                .groupName("子分组");    }}

    五、配置分组详情

    除了分组名称之外,我们还可以为每个分组添加描述信息。以下是一个完整的分组配置示例:

    @Configuration@EnableSwagger2public class SwaggerConfig {    @Bean    public Docket mainGroup() {        return new Docket(DocumentationType.SWAGGER_2)                .groupName("主分组")                .apiInfo(apiInfo());    }    private ApiInfo apiInfo() {        Contact contact = new Contact("张涵哲", "http://blog.hanzhe.club", null);        return new ApiInfo(                "主分组 API 文档",                "张涵哲的 API 文档",                "1.0.0",                null,                contact,                null,                " Swagger 2.0 文档",                new ArrayList<>());    }}

    此外,Swagger 还支持通过 select() 方法筛选接口。例如,根据包路径或路径来过滤接口:

    @Configuration@EnableSwagger2public class SwaggerConfig {    @Bean    public Docket mainGroup() {        return new Docket(DocumentationType.SWAGGER_2)                .groupName("主分组")                .apiInfo(apiInfo())                .select()                .apis(RequestHandlerSelectors.basePackage("com.example.controller"))                .build();    }    private ApiInfo apiInfo() {        // 同上    }}

    六、接口信息配置

    为了让接口文档更加详细,我们可以使用以下注解:

  • @Api(tags = "标签"):为接口分组。
  • @ApiOperation(value = "接口标题", notes = "接口描述"):为接口添加标题和描述。
  • @ApiParam(name = "参数名称", value = "参数描述"):为接口参数添加描述。
  • 例如,以下是一个完整的 UserController 配置:

    @RestController@RequestMapping("/user")@Api(tags = "用户接口文档")public class UserController {    @GetMapping("/")    @ApiOperation(value = "查询所有用户", notes = "获取用户列表")    public R getUserList() {        // 业务逻辑    }    @PostMapping("/")    @ApiOperation(value = "添加新用户", notes = "提交用户信息进行添加")    public R addUser(@RequestBody UserBean user) {        // 业务逻辑    }    @PutMapping("/{id}")    @ApiOperation(value = "更新用户信息", notes = "路径传入 ID,json 传输修改信息")    public R updateUser(@PathVariable("id") Long id, @RequestBody UserBean user) {        // 业务逻辑    }    @DeleteMapping("/{id}")    @ApiOperation(value = "删除用户信息", notes = "路径传入 ID 进行删除")    public R deleteUser(@ApiParam("删除的目标 ID") @PathVariable("id") Long id) {        // 业务逻辑    }}

    七、实体类信息配置

    为了让实体类信息也出现在文档中,我们可以使用以下注解:

  • @ApiModel(name = "实体类名称"):为实体类添加名称。
  • @ApiModelProperty(name = "字段名称", value = "字段描述"):为实体类字段添加描述。
  • 例如,以下是一个简单的 UserBean 配置:

    @Data@NoArgsConstructor@AllArgsConstructor@ApiModel("员工实体类")public class UserBean {    @ApiModelProperty("员工 ID,用来识别员工的唯一表示,不可重复。")    private Long id;    @ApiModelProperty("员工姓名")    private String name;    @ApiModelProperty("员工年龄")    private Integer age;}

    通过以上配置,您可以轻松生成和管理接口文档,提升后端与前端的协作效率。

    转载地址:http://htxuz.baihongyu.com/

    你可能感兴趣的文章
    NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
    查看>>
    NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
    查看>>
    NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
    查看>>
    NIFI从PostGresql中离线读取数据再导入到MySql中_带有数据分页获取功能_不带分页不能用_NIFI资料太少了---大数据之Nifi工作笔记0039
    查看>>
    NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
    查看>>
    Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
    查看>>
    NIFI大数据进阶_FlowFile拓扑_对FlowFile内容和属性的修改删除添加_介绍和描述_以及实际操作---大数据之Nifi工作笔记0023
    查看>>
    NIFI大数据进阶_NIFI的模板和组的使用-介绍和实际操作_创建组_嵌套组_模板创建下载_导入---大数据之Nifi工作笔记0022
    查看>>
    NIFI大数据进阶_NIFI监控的强大功能介绍_处理器面板_进程组面板_summary监控_data_provenance事件源---大数据之Nifi工作笔记0025
    查看>>
    NIFI大数据进阶_内嵌ZK模式集群1_搭建过程说明---大数据之Nifi工作笔记0015
    查看>>
    NIFI大数据进阶_外部ZK模式集群1_实际操作搭建NIFI外部ZK模式集群---大数据之Nifi工作笔记0017
    查看>>
    NIFI大数据进阶_离线同步MySql数据到HDFS_01_实际操作---大数据之Nifi工作笔记0029
    查看>>
    NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
    查看>>
    NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
    查看>>
    NIFI数据库同步_多表_特定表同时同步_实际操作_MySqlToMysql_可推广到其他数据库_Postgresql_Hbase_SqlServer等----大数据之Nifi工作笔记0053
    查看>>
    NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001---大数据之Nifi工作笔记0068
    查看>>