博客
关于我
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/

    你可能感兴趣的文章
    nginx 反向代理 转发请求时,有时好有时没反应,产生原因及解决
    查看>>
    Nginx 反向代理解决跨域问题
    查看>>
    Nginx 反向代理配置去除前缀
    查看>>
    nginx 后端获取真实ip
    查看>>
    Nginx 多端口配置和访问异常问题的排查与优化
    查看>>
    Nginx 如何代理转发传递真实 ip 地址?
    查看>>
    Nginx 学习总结(16)—— 动静分离、压缩、缓存、黑白名单、性能等内容温习
    查看>>
    Nginx 学习总结(17)—— 8 个免费开源 Nginx 管理系统,轻松管理 Nginx 站点配置
    查看>>
    Nginx 学习(一):Nginx 下载和启动
    查看>>
    nginx 常用指令配置总结
    查看>>
    Nginx 常用配置清单
    查看>>
    nginx 常用配置记录
    查看>>
    nginx 开启ssl模块 [emerg] the “ssl“ parameter requires ngx_http_ssl_module in /usr/local/nginx
    查看>>
    Nginx 我们必须知道的那些事
    查看>>
    Nginx 的 proxy_pass 使用简介
    查看>>
    Nginx 的配置文件中的 keepalive 介绍
    查看>>
    Nginx 结合 consul 实现动态负载均衡
    查看>>
    Nginx 负载均衡与权重配置解析
    查看>>
    Nginx 负载均衡详解
    查看>>
    nginx 配置 单页面应用的解决方案
    查看>>