Knife4j Swagger
1. 依赖
<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0.3</version></dependency>
2. 配置
- 第二步配置完成就可以访问:
http://localhost:8080/doc.html
看到效果了
Swagger的配置通常是通过Java代码进行细粒度控制,建议使用配置类的方式进行配置
@Configuration
@Slf4j
public class WebMvcConfiguration extends WebMvcConfigurationSupport {/*** 通过knife4j生成接口文档** @return*/@Beanpublic Docket docket1() {ApiInfo apiInfo = new ApiInfoBuilder().title("苍穹外卖项目接口文档").version("2.0").description("苍穹外卖项目接口文档").build();Docket docket = new Docket(DocumentationType.SWAGGER_2).groupName("管理端接口") // 分组名称.apiInfo(apiInfo).select().apis(RequestHandlerSelectors.basePackage("com.sky.controller.admin")) // 指定更具体的controller目录.paths(PathSelectors.any()).build();return docket;}@Beanpublic Docket docket2() {ApiInfo apiInfo = new ApiInfoBuilder().title("苍穹外卖项目接口文档").version("2.0").description("苍穹外卖项目接口文档").build();Docket docket = new Docket(DocumentationType.SWAGGER_2).groupName("用户端接口") // 分组名称.apiInfo(apiInfo).select().apis(RequestHandlerSelectors.basePackage("com.sky.controller.user"))// 指定更具体的controller目录.paths(PathSelectors.any()).build();return docket;}/*** 设置静态资源映射* @param registry*/protected void addResourceHandlers(ResourceHandlerRegistry registry) {// 必须配置/doc.html的静态路径,不然访问时会返回403:找不到页面registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");}
3. 注解的使用
swagger 2 | swagger 3 | 用途 |
---|---|---|
@Api | @Tag | 用于controller类上 |
@ApiOperation(value = “作用”, notes = “描述”) | @Operation(summary = “作用”, description = “描述”) | 用于controller类的方法上,说明方法的用途作用 |
@ApiImplicitParam | @Parameter | 用于controller类方法的参数,描述单个参数 |
@ApiParam | @Parameter | @ApiImplicitParam缩写形式 |
@ApiImplicitParams | @Parameters | 描述多个参数。它是一个容器注解,可以包含多个 |
@ApiIgnore | @Parameter(hidden = true) 或 @Operation(hidden = true) 或 @Hidden | 用于参数,隐藏该参数@ApiImplicitParam 注解。 |
@ApiModel | @Schema | 用于实体类 |
@ApiModelProperty | @Schema | 用在实体类属性上,描述属性信息 |
- 在方法中使用
/*** 员工管理*/
@RestController
@RequestMapping("/admin/employee")
@Api(tags = "员工相关接口")
public class EmployeeController {@ApiOperation(value = "员工登录")@PostMapping("/login")public Result<EmployeeLoginVO> login(@RequestBody EmployeeLoginDTO employeeLoginDTO) {return Result.success(employeeLoginVO);}