Swagger是一套基于OpenAPI规范构建的开源工具,可以帮助开发者设计、构建、记录以及使用Rest API文档,Asuka中使用Knife4j作为swagger的使用组件,它在swagger的基础上增强了部分功能,并对原始的swagger文档页面进行了美化。
依赖与配置
pom.xml
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>2.0.4</version>
</dependency>
SwaggerConfig:
@EnableSwagger2
@EnableKnife4j
@Configuration
@Import(BeanValidatorPluginsConfiguration.class)
public class SwaggerConfig {
@Bean
public Docket defaultApi(){
Docket docket=new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
//分组名称
.groupName("default")
.select()
//这里指定Controller扫描包路径
.apis(RequestHandlerSelectors.basePackage("com.asuka.module.api"))
.paths(PathSelectors.any())
.build();
return docket;
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("Asuka Api 开发文档")
.description("")
.version("1.0")
.build();
}
}
使用
swagger的使用非常简单,常用的方法是在需要生成文档的Controller类上添加@Api注解,在方法上添加@ApiOperation注解,在参数实体类上添加@ApiModel和@ApiModelProperty注解,如下所示:
@Api(value = "测试", tags = "测试")
@RequestMapping("/api/v1/test")
@RestController
public class ApiTestController {
@ApiOperation("测试接口")
@GetMapping
public JsonResult test(@RequestBody TestDto dto){
return JsonResult.programing();
}
}
@ApiModel("演示参数")
public class TestDto {
@ApiModelProperty("名称")
private String name;
@ApiModelProperty("当前页码")
private int pageNo;
}
当然,swagger用法远不止,更多文档请参考knife4j的文档:https://doc.xiaominfo.com/