You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpringBoot Swagger如何获取指定Controller/接口的swagger.json

基于你使用的springfox-boot-starter:3.0.0版本,两个需求都可以通过框架原生能力实现,不需要修改核心逻辑或引入额外依赖,具体实现方式如下:

1. 为不同调用系统生成对应Controller的独立swagger.json

实现核心是Springfox原生提供的Docket分组机制,每个分组对应独立的文档返回结果,配置后不同分组的api-docs接口只会返回筛选范围内的接口信息。
配置步骤:

  • 先对不同服务对象的Controller做归类:可以按包路径拆分,比如面向系统A的Controller统一放在com.yourapp.controller.systema包下,面向系统B的放在com.yourapp.controller.systemb包下;也可以自定义注解(比如@ApiForSystemA)标记对应Controller,两种方式都可以作为筛选条件。
  • 在Swagger配置类中为每个系统创建独立的Docket实例,指定分组名和扫描规则,示例代码如下:
@Configuration
public class SpringFoxConfig {

    // 系统A专属文档分组
    @Bean
    public Docket systemADocket() {
        return new Docket(DocumentationType.OAS_30)
                .groupName("systemA")
                .select()
                // 按包路径筛选系统A的所有Controller
                .apis(RequestHandlerSelectors.basePackage("com.yourapp.controller.systema"))
                // 如果用注解标记,替换为下面的筛选规则即可
                // .apis(RequestHandlerSelectors.withClassAnnotation(ApiForSystemA.class))
                .paths(PathSelectors.any())
                .build();
    }

    // 系统B专属文档分组
    @Bean
    public Docket systemBDocket() {
        return new Docket(DocumentationType.OAS_30)
                .groupName("systemB")
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.yourapp.controller.systemb"))
                .paths(PathSelectors.any())
                .build();
    }
}

配置完成后,不同系统可以通过指定group参数访问专属的swagger.json:

  • 系统A访问地址:/v3/api-docs?group=systemA,返回结果仅包含系统A对应Controller的所有接口
  • 系统B访问地址:/v3/api-docs?group=systemB,返回结果仅包含系统B对应Controller的所有接口
2. 生成单个接口端点对应的swagger.json

该能力同样原生支持,有两种常用实现方式:

  • 临时筛选方式:不需要额外配置,直接在访问api-docs时追加path参数指定目标接口路径即可,比如要获取系统A下路径为/api/a/order/create的单接口文档,直接访问/v3/api-docs?group=systemA&path=/api/a/order/create,返回结果就只包含该接口的描述信息。
  • 固定端点方式:如果需要给单个接口生成固定的文档访问地址,可以额外创建一个Docket分组,在路径筛选规则中精确匹配目标接口,示例代码:
@Bean
public Docket singleCreateOrderApi() {
    return new Docket(DocumentationType.OAS_30)
            .groupName("createOrderApi")
            .select()
            .apis(RequestHandlerSelectors.any())
            // 精确匹配目标单接口路径
            .paths(PathSelectors.ant("/api/a/order/create"))
            .build();
}

配置完成后直接访问/v3/api-docs?group=createOrderApi,即可拿到该单接口的固定swagger.json。

注意:以上路径基于Springfox 3.0.0默认配置,如果你在配置中修改了api-docs的基础路径,替换为实际使用的路径即可。

内容的提问来源于stack exchange,提问作者Mts

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 08:46:34