Swagger是一套基于OpenAPI规范构建的开源工具,可以帮助开发者设计、构建、记录以及使用Rest API文档,Asuka中使用Knife4j作为swagger的使用组件,它在swagger的基础上增强了部分功能,并对原始的swagger文档页面进行了美化。

依赖与配置

pom.xml

  1. <dependency>
  2. <groupId>com.github.xiaoymin</groupId>
  3. <artifactId>knife4j-spring-boot-starter</artifactId>
  4. <version>2.0.4</version>
  5. </dependency>

SwaggerConfig:

  1. @EnableSwagger2
  2. @EnableKnife4j
  3. @Configuration
  4. @Import(BeanValidatorPluginsConfiguration.class)
  5. public class SwaggerConfig {
  6. @Bean
  7. public Docket defaultApi(){
  8. Docket docket=new Docket(DocumentationType.SWAGGER_2)
  9. .apiInfo(apiInfo())
  10. //分组名称
  11. .groupName("default")
  12. .select()
  13. //这里指定Controller扫描包路径
  14. .apis(RequestHandlerSelectors.basePackage("com.asuka.module.api"))
  15. .paths(PathSelectors.any())
  16. .build();
  17. return docket;
  18. }
  19. private ApiInfo apiInfo() {
  20. return new ApiInfoBuilder()
  21. .title("Asuka Api 开发文档")
  22. .description("")
  23. .version("1.0")
  24. .build();
  25. }
  26. }

使用

swagger的使用非常简单,常用的方法是在需要生成文档的Controller类上添加@Api注解,在方法上添加@ApiOperation注解,在参数实体类上添加@ApiModel和@ApiModelProperty注解,如下所示:

  1. @Api(value = "测试", tags = "测试")
  2. @RequestMapping("/api/v1/test")
  3. @RestController
  4. public class ApiTestController {
  5. @ApiOperation("测试接口")
  6. @GetMapping
  7. public JsonResult test(@RequestBody TestDto dto){
  8. return JsonResult.programing();
  9. }
  10. }
  1. @ApiModel("演示参数")
  2. public class TestDto {
  3. @ApiModelProperty("名称")
  4. private String name;
  5. @ApiModelProperty("当前页码")
  6. private int pageNo;
  7. }

当然,swagger用法远不止,更多文档请参考knife4j的文档:https://doc.xiaominfo.com/