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 {@Beanpublic 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")@RestControllerpublic class ApiTestController {@ApiOperation("测试接口")@GetMappingpublic 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/
