Swagger项目实战中Docket分布
一:概述
- 首先介绍一下docket和group
不同的模块相同或者不同的docket,最后可以有两种不同的展示方法
new Docket().groupName就是最右上方的下拉框
new Docket().apiInfo(new apiInfo(title(“大标题”)))就是这个页面左上角最明显的大名字
- 所有接口都放在一个docket下面,像这种
- 不同模块接口放在不同docket,像下面这种
二:图一实现方法
package com.gsafety.screen.wuhu.swagger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.useDefaultResponseMessages(false)
.select()
.apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("芜湖大屏查询")//大标题
.version("1.0")//版本
.build();
}
}
核心就是select().apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
意思就是筛选了只具有ClassAnnotation类注解RestController这个注解的接口
然后就是在每个Controller里面填写
@Rest Controller
@Api(“模块名字”)
//Controller里面代码开头如下
@Api(value = "隐患相关接口", tags = {"隐患相关接口"})
@RestController
@RequestMapping("/accident")
@Slf4j
public class AccidentController extends BaseController {
三:图二实现方法
//注解代码
package com.gsafety.pms.dept.config.swagger;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface ApiForBackEndInDept {
}
//swaggerConfig代码
package com.gsafety.pms.dept.config.swagger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* @author dj
* @Description TODO
* @Date 2021/11/8 10:57
*/
@Configuration
@EnableSwagger2
public class DeptSwaggerConfig {
@Bean
public Docket createDeptApi() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("部门对象相关API接口")
.apiInfo(resApiInfo())
.useDefaultResponseMessages(false)
.select()
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiForBackEndInDept.class))
.build();
}
private ApiInfo resApiInfo() {
return new ApiInfoBuilder()
.title("部门对象相关API接口")//大标题
.version("1.0")//版本
.build();
}
}
这个意思就是给每个模块加上一个注解和swagger配置,
其中自定义注解就是用于写在controller里面的接口里面,每个加上了这个注解的接口都会被放在这个docket里面。
而swagger配置就是用于产生新的groupName和Title
上面两个配置完之后直接在controller里面写上注解名字@ApiForBackxxx()就可以直接将该接口放在固定的某一个docket里面了。
*/
@Slf4j
@Api(tags = "部门API")
@RestController
@RequestMapping("/dept/v1")
public class SysDeptController extends BaseController {
@Autowired
private SysDeptService deptService;
@ApiOperation("分页查询部门信息")
@ApiForBackEndInDept
@PostMapping("/pageDept")
public ResponseModel<PageModel<SysDept>> pageDept(
e SysDeptService deptService;
@ApiOperation("分页查询部门信息")
@ApiForBackEndInDept
@PostMapping("/pageDept")
public ResponseModel<PageModel<SysDept>> pageDept(