引入knife4j
版本 |
说明 |
1.9.6 |
蓝色皮肤风格,开始更名,增加更多后端模块 |
2.0~2.0.5 |
Ui重写,底层依赖的springfox框架版本是2.9.2 |
2.0.6~ |
springfox框架版本升级至2.10.5,OpenAPI规范是V2 |
3.0~ |
底层依赖spingfox框架版本升级至3.0.3,OpenAPI规范是V3 |
以下为2.0.9依赖,相对比较稳定,3.X坑有点多
注:此处使用的Sprin boot版本为2.3.5
1 2 3 4 5
| <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>2.0.9</version> </dependency>
|
创建Swagger配置类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| import io.swagger.annotations.ApiOperation; 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.service.Contact; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
@Configuration @EnableSwagger2WebMvc public class SwaggerConfig { @Bean public Docket webApiConfig(){ return new Docket(DocumentationType.SWAGGER_2) .apiInfo(webApiInfo()) .select() .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) .build(); }
private ApiInfo webApiInfo(){ return new ApiInfoBuilder() .title("标题:系统接口文档") .description("描述:本文档描述了系统的接口定义") .version("1.0") .contact(new Contact("龙场悟道中", "https://L5501.run", "L55011225@gmail.com")) .license("龙场悟道中") .licenseUrl("https://L5501.run") .build(); }
|
实体类测试
如果只是做了这些配置,并不会在接口文档中记录,如果需要被记录,则必须在加了swagger注解的controller中使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data;
@Data @ApiModel("手机实体类") public class Phone {
@ApiModelProperty("id") private String id;
@ApiModelProperty("手机名称") private String name;
@ApiModelProperty("手机价格") private Double price; }
|
控制类测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| import com.ll.knife4j_demo.entity.Phone; import com.ll.knife4j_demo.entity.User; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.web.bind.annotation.*;
@RestController @RequestMapping("controller1") @Api(tags = "这是一个应用") public class TestController {
@GetMapping("api1/{id}") @ApiOperation("api1") public void api1(@PathVariable("id") @ApiParam("用户id") String id){ }
@PostMapping("api2") @ApiOperation("api2") public void api2(@RequestBody User user) { } }
|
YML文件相关配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| server: port: 1225 spring: application: name: demo
knife4j: enable: true basic: enable: true username: luke password: 123456
|
然后运行spring boot项目,再访问http://localhost:1225/doc.html
详情可以参考https://doc.xiaominfo.com/docs/quick-start