SpringBoot整合Swagger3

swagger 一个强大的API文档工具

在spring boot项目中使用也是非常的简单, 简单的记录一下再spring boot项目中的整合方法.

  1. 引入依赖
xml 复制代码
<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
</dependency>
  1. 在需要暴露的类和方法上添加注释
less 复制代码
@RestController
@RequestMapping("/demo")
@Tag(name = "Demo接口", description = "Demo接口描述信息")
public class DemoController {

    @GetMapping("/01")
    @Operation(summary = "Demo接口01", description = "Demo接口01描述信息")
    public CarInfo test() {
        return new CarInfo();
    }

    @GetMapping("/02")
    @Operation(summary = "Demo接口02", description = "Demo接口02描述信息")
    public CarInfo test02() {
        return new CarInfo();
    }
}
less 复制代码
@RestController
@RequestMapping("/test")
@Tag(name = "测试接口", description = "测试接口描述信息")
public class TestController {

    @GetMapping("/01")
    @Operation(summary = "测试接口01", description = "测试接口01描述信息")
    public CarInfo test() {
        return new CarInfo();
    }

    @GetMapping("/02")
    @Operation(summary = "测试接口02", description = "测试接口02描述信息")
    public CarInfo test02() {
        return new CarInfo();
    }
}
less 复制代码
@RestController
@RequestMapping("/test02")
@Tag(name = "测试接口", description = "测试接口描述信息2")
public class Test02Controller {

    @GetMapping("/01")
    @Operation(summary = "测试接口01", description = "测试接口01描述信息")
    public CarInfo test() {
        return new CarInfo();
    }

    @GetMapping("/02")
    @Operation(summary = "测试接口02", description = "测试接口02描述信息")
    public CarInfo test02() {
        return new CarInfo();
    }
}

这里用到了两个相关注解:

@Tag: 写在类上, 如果多个类使用同一个name, 例如: TestController和Test02Controller 在最终的展示页面, 这两个类的接口会被划分到一个列表内展示.

@Operation: 方法级别的注解, 用于描述一个方法的用法和描述信息.

  1. 配置信息
java 复制代码
@Configuration
public class Swagger3Config {

    @Bean
    public GroupedOpenApi testApi()
    {
        return GroupedOpenApi.builder().group("测试模块").pathsToMatch("/**").build();
    }
    @Bean
    public GroupedOpenApi otherApi()
    {
        return GroupedOpenApi.builder().group("其它微服务模块").pathsToMatch("/other/**", "/others").build();
    }

    @Bean
    public GroupedOpenApi commonApi()
    {
        return GroupedOpenApi.builder().group("通用服务模块").pathsToMatch("/common/**").build();
    }

    @Bean
    public OpenAPI docsOpenApi()
    {
        return new OpenAPI()
            .info(new Info().title("winston的swagger3学习")
                      .description("winston的swagger3学习, 必将学习成为大牛")
                      .version("v1.0"))
            .externalDocs(new ExternalDocumentation()
                              .description("百度一下,你就知道")
                              .url("https://www.baidu.com/"));
    }
}
  1. 启动项目可以看到配置信息对UI中的影响

4.1 api文档地址: 项目跟路径+ /swagger-ui/index.html

4.2 分组信息:

4.3 项目元数据

4.4 详细的接口信息

  1. 总结

以上就是spring boot整合swagger的简单用法, 可以看到通过简单的配置, 就可以很方便的使用swagger, 但是也可以看到需要再web类型中加入一些swagger的注解, 对代码也是有一定的入侵的, 如果要使用更多的特性就需要加入更多的注解, 同时对代码的入侵就会更加严重, 在实际使用过程中, 需要开发人员权衡好swagger带来的利弊.

文章这里用的是3.0的版本, 更加明细的用法请参考官方文档: swagger.io/docs/specif...

相关推荐
ServBay11 小时前
Claude 账号可能被盗刷,而你毫无察觉
api·ai编程·claude
DevOpenClub13 小时前
网页采集如何稳定输出结构化数据:JSON、链接与快照三阶段流水线
数据库·json·api
記億揺晃着的那天19 小时前
Amazon SP-API 报告创建全流程与状态机:从创建、轮询到下载入库,新手避坑指南
api·架构设计·系统设计·amazon api·sp-api
VIP_CQCRE21 小时前
用一张图和一段音频生成数字人口播视频:Ace Data Cloud Dreamina API 接入指南
api·数字人·ai视频·acedatacloud
Raas10021 小时前
MAI Gateway(魔芋企业级AI网关)详解:企业为什么需要AI网关,一文读懂企业AI流量治理
大数据·人工智能·gateway·api·ai网关·mai gateway
Tanshu_API君21 小时前
身份证实名认证接口对接:PHP 接入二要素核验实战
php·api·实名认证·身份证实名认证·身份认证接口·运营商接口·运营商二要素
万邦科技Lafite1 天前
1688一键创建订单付款API操作指南讲解
人工智能·微信·api·电商开放平台·淘宝开放平台·api开放接口
用户7783366132112 天前
用 React Hook 封装搜索数据:useSerp 的防抖、缓存与错误处理
python·api
VIP_CQCRE3 天前
AceData Cloud MCP:把整个平台能力接入你的 AI 助手
ai·api·mcp·acedatacloud
XLYcmy3 天前
HTML/CSS/JS 基础与 Vue 技术栈深度解析
java·前端·css·html·vue3·vue2·api