SpringBoot集成Swagger带你单手玩转groupName()分组
前言
- 关于过滤的东西我们全部讲完了,今天主要来讲下分组。
- 当项目过去庞大时,一个组可能不能满足我们的需求。
- 我们需要对项目的不同功能进行分组,方便查看和区分。
groupName()分组
-
首先我们看下,默认的有哪些分组?启动项目。
-
-
默认只有一个分组
default
,默认分组。 -
源码如下:
-
/** * If more than one instance of Docket exists, each one must have a unique groupName as * supplied by this method. Defaults to "default". * * @param groupName - the unique identifier of this swagger group/configuration * @return this Docket */ public Docket groupName(String groupName) { this.groupName = defaultIfAbsent(groupName, this.groupName); return this; } 复制代码
-
-
那么
this.groupName
的值呢? -
-
由此可以得出,当我们不设定
groupName()
时,会有且只有一个默认分组。 -
自定义分组名称
-
@Bean public Docket docket(){ return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .groupName("group1") .enable(swaggerModel.isEnable()) .select() .paths(PathSelectors.any()) .build(); } 复制代码
-
-
再次启动项目看看
-
-
ok!没问题了,成功设定了分组!
-
那么,如果我们有多个分组该怎么办呢?
-
前面的文章就讲到了,我们是使用
Docket
来控制Swagger
的配置的。 -
只需要设定多个
Docket
即可。 -
代码如下:
-
@Bean public Docket docket1(){ return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .groupName("group1") .enable(swaggerModel.isEnable()) .select() .paths(PathSelectors.any()) .build(); } @Bean public Docket docket2(){ return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .groupName("group2") .enable(swaggerModel.isEnable()) .select() .paths(PathSelectors.any()) .build(); } @Bean public Docket docket3(){ return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .groupName("group3") .enable(swaggerModel.isEnable()) .select() .paths(PathSelectors.any()) .build(); } 复制代码
-
再次重启项目
-
-
nice!多个分组设置成功!
-
总结
- 如果是在实际项目开发中呢?
- 因为有多个
Docket
,每个Docket
都可以设置一个分组,当然也可以设定每个Docket
的单独过滤规则 - 这样就完美设置成了一个大的功能模块对应一个分组。
- 方便前端根据功能来查找对应的接口信息。
- 为什么要这样?
- 因为项目大了之后可能有几百上千个接口。如果全在一个组内,找起来特别麻烦!
- 而
groupName()
可以很方便的帮我们规避掉这个问题! - 以上都是个人所言,如有不对,欢迎指出。
链接:https://juejin.cn/post/7034136133449547784