当前位置:   article > 正文

swagger2的全新UI组件Knife4j_knife4j-spring-ui

knife4j-spring-ui
前后端对接,就得有一个好的的接口文档,具体到:接口的名称,说明,入参字段,出参字段,是否必传,参数类型等等,这里记录一下使用的swagger ui组件 knife4j-spring-ui。

knife4j-spring-ui 是swagger的一个增强版,相比官方ui,其界面更美观,功能更强大,字段说明更清晰直观,测试起来更方便

对比一下:

官方UI:

全新UI:

集成在sprintboot项目中

使用Knife4j有两种方式:

官网地址:Knife4j · 集Swagger2及OpenAPI3为一体的增强解决方案. | Knife4j

第一种:

一、pom文件添加依赖

  1. <!-- Swagger2增强版,全新UI 引入Knife4j的官方start包,Swagger2基于Springfox2.10.5项目-->
  2. <dependency>
  3. <groupId>com.github.xiaoymin</groupId>
  4. <artifactId>knife4j-spring-boot-starter</artifactId>
  5. <version>2.0.9</version>
  6. </dependency>

 二、配置文件添加配置(可以不配)

配置基本的文档说明信息,如果不配置,就是默认的

  1. ##### swagger文档的部分配置 ####
  2. knife4j:
  3. # 生产环境可改为 false(改为false后 swagger将不能使用)
  4. enable: true

 三、配置swagger静态页面访问路径

如果不配置,访问swagger页面时可能出现404

  1. package com.zhh.demo.config;
  2. import org.springframework.beans.factory.annotation.Value;
  3. import org.springframework.context.annotation.Bean;
  4. import org.springframework.context.annotation.Configuration;
  5. import springfox.documentation.builders.ApiInfoBuilder;
  6. import springfox.documentation.builders.PathSelectors;
  7. import springfox.documentation.builders.RequestHandlerSelectors;
  8. import springfox.documentation.service.Contact;
  9. import springfox.documentation.spi.DocumentationType;
  10. import springfox.documentation.spring.web.plugins.Docket;
  11. import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
  12. /**
  13. * @Description: swagger全新UI
  14. * @Author: zhaoheng
  15. */
  16. @Configuration
  17. @EnableSwagger2WebMvc
  18. public class Knife4jConfiguration {
  19. /** 生产环境可改为 false(改为false后 swagger将不能使用)*/
  20. @Value("${knife4j.enable:true}")
  21. private boolean knife4jEnable;
  22. /**
  23. * 初始化配置,注入到容器
  24. * swagger访问地址:http://127.0.0.1:8080/demo/doc.html#/home
  25. */
  26. @Bean(value = "dockerBean")
  27. public Docket dockerBean() {
  28. //指定使用Swagger2规范
  29. Docket docket = new Docket(DocumentationType.SWAGGER_2)
  30. .apiInfo(new ApiInfoBuilder()
  31. //描述字段支持Markdown语法
  32. .description("# xxx管理平台接口api")
  33. .termsOfServiceUrl("https://doc.xiaominfo.com/")
  34. .contact(new Contact("zhaoheng", "https://blog.csdn.net/Muscleheng", "xxx@163.com"))
  35. .version("1.0")
  36. .build())
  37. //分组名称
  38. .groupName("xxx服务")
  39. .enable(knife4jEnable)
  40. .select()
  41. //这里指定Controller扫描包路径
  42. .apis(RequestHandlerSelectors.basePackage("com.zhh.demo.controller"))
  43. .paths(PathSelectors.any())
  44. .build();
  45. return docket;
  46. }
  47. }

第二种:

一、pom文件添加依赖

  1. <!-- 封装了swagger2 -->
  2. <dependency>
  3. <groupId>io.github.wilson-he</groupId>
  4. <artifactId>swagger2-spring-boot-starter</artifactId>
  5. <version>1.1.2</version>
  6. </dependency>
  7. <!-- swagger增强版ui,相比官方ui,界面更美观,功能更强大 -->
  8. <!-- 如果springBoot版本过高,可能会出现错误 -->
  9. <dependency>
  10. <groupId>com.github.xiaoymin</groupId>
  11. <artifactId>knife4j-spring-ui</artifactId>
  12. <version>3.0.2</version>
  13. </dependency>

二、配置文件添加配置(可以不配)

配置基本的文档说明信息,如果不配置,就是默认的

  1. ##### swagger文档部分配置 ####
  2. swagger:
  3. # 生产环境改为false(改为false后swagger-ui.html则无法访问)
  4. enabled: true
  5. docket:
  6. api-info:
  7. title: xxx管理平台接口api
  8. description: 文件详细说明
  9. version: 1.0.0
  10. # 维护者信息
  11. contact:
  12. name: zhaoheng
  13. url: https://blog.csdn.net/Muscleheng?type=blog

三、配置swagger静态页面访问路径

如果不配置,访问swagger页面时可能出现404

  1. @Configuration
  2. public class WebMvcConfig implements WebMvcConfigurer {
  3. /**
  4. * 配置静态资源访问路径
  5. */
  6. @Override
  7. public void addResourceHandlers(ResourceHandlerRegistry registry) {
  8. // 静态资源访问路径和存放路径配置
  9. registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/","classpath:/public/");
  10. // swagger访问配置
  11. registry.addResourceHandler("/**").addResourceLocations("classpath:/META-INF/resources/","classpath:/META-INF/resources/webjars/");
  12. }
  13. }

四、编写代码测试成果

在对应的出入参实体类、字段上添加swagger的注解,就能在接口文档上显示对应的字段说明

1. model实体示例

出参实体:

  1. import io.swagger.annotations.ApiModel;
  2. import io.swagger.annotations.ApiModelProperty;
  3. import lombok.Data;
  4. @Data
  5. @ApiModel("用户信息出参实体")
  6. public class UserVO {
  7. @ApiModelProperty(value = "编号")
  8. private Long id;
  9. @ApiModelProperty(value = "姓名")
  10. private String name;
  11. @ApiModelProperty(value = "年龄")
  12. private Integer age;
  13. }

入参实体:

  1. import io.swagger.annotations.ApiModel;
  2. import io.swagger.annotations.ApiModelProperty;
  3. import lombok.Data;
  4. @Data
  5. @ApiModel("用户信息查询入参实体")
  6. public class QueryUserRO {
  7. @ApiModelProperty(value = "编号",required = true)
  8. private Long id;
  9. @ApiModelProperty(value = "姓名",required = false)
  10. private String name;
  11. }

2.  controller示例

  1. @Api(tags = "用户管理-api")
  2. @RestController
  3. @RequestMapping("/demo1")
  4. public class Demo1Controller {
  5. @ApiOperation("查询用户接口1")
  6. @PostMapping("/getUser")
  7. public UserVO getUser(@RequestBody QueryUserRO queryUserRO){
  8. return new UserVO();
  9. }
  10. @ApiOperation("查询用户接口2")
  11. @ApiImplicitParams({
  12. @ApiImplicitParam(name = "id", value = "用户id", dataType = "Long", required = true),
  13. @ApiImplicitParam(name = "name", value = "用户姓名", dataType = "String", required = false)
  14. })
  15. @PostMapping("/getUser2")
  16. public UserVO getUser2(@RequestParam(name = "id",required = true) Long id, @RequestParam(name = "name",required = false) String name){
  17. return new UserVO();
  18. }
  19. }

启动项目,可通过两个地址访问到swagger文档:

官方文档UI界面:127.0.0.1:8080/swagger-ui.html

增强版UI界面:127.0.0.1:8080/doc.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/93459
推荐阅读
相关标签
  

闽ICP备14008679号