一、Swagger 配置多个接口文档实现
场景说明:在一个项目中,后台接口分为后端后台接口和小程序端接口,为了方便区分,希望将2种不同的接口分开展示。
在做当前配置之前,首先你得先配置好基础的swagger配置,并且能够访问swagger的swagger-ui的页面。 http://localhost:8080/swagger-ui/index.html,如下:
然后,在你的swagger配置中,copy一份 @Bean 的注解的方法,将 .groupName(GROUP_NAME_ADMIN) 的参数名称修改,使其和之前的不一样就行。如下代码:
/**
* 创建API
*/
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.OAS_30)
.groupName(GROUP_NAME_ADMIN)
// 是否启用Swagger
.enable(enabled)
// 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息)
.apiInfo(apiInfo())
// 设置哪些接口暴露给Swagger展示
.select()
// 扫描所有有注解的api,用这种方式更灵活
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
// 扫描指定包中的swagger注解 e.g com.ruoyi.project.tool.swagger
.apis(RequestHandlerSelectors.basePackage("com.mrcy.wechat"))
// 扫描所有 .apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build()
/* 设置安全模式,swagger可以设置访问token */
.securitySchemes(securitySchemes())
.securityContexts(securityContexts())
.pathMapping(pathMapping);
}
@Bean
public Docket createWxRestApi() {
return new Docket(DocumentationType.OAS_30)
.groupName(GROUP_NAME_WX_API)
// 是否启用Swagger
.enable(enabled)
// 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息)
.apiInfo(apiInfo())
// 设置哪些接口暴露给Swagger展示
.select()
// 扫描所有有注解的api,用这种方式更灵活
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
// 扫描指定包中的swagger注解 e.g com.ruoyi.project.tool.swagger
.apis(RequestHandlerSelectors.basePackage("com.mrcy.web")
.or(RequestHandlerSelectors.basePackage("com.mrcy.common.core.domain")))
// 扫描所有 .apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build()
/* 设置安全模式,swagger可以设置访问token */
.securitySchemes(securitySchemes())
.securityContexts(securityContexts())
.pathMapping(pathMapping);
}
二、Swagger 实现多包扫描的配置方式
场景说明:在一个项目中,子模块随处可见,很可能你需要的某一个类在common中,但是你当前swagger的扫描并不能支持扫描到,所以就需要配置多包扫描。
具体代码已经在上面体现,即是下面这一部分:
.apis(RequestHandlerSelectors.basePackage("com.mrcy.web").or(RequestHandlerSelectors.basePackage("com.mrcy.common.core.domain")))
值得注意的是使用的 or 连接。