当前位置:   article > 正文

spring boot整合Knife4j_springboot集成knife4j

springboot集成knife4j

目录

1、Knife4j简介

2、与 spring boot整合

2.1 引入依赖

2.2 配置Knife4j

2.3 放行Knife4j请求

2.4 使用Knife4j注解标记接口

2.5 访问页面

 3、其它功能

3.1 token认证参数设置

 3.2 离线文档


1、Knife4j简介

以下内容来自Knife4j官网,贴一下官网地址:https://doc.xiaominfo.com/

knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案

Knife4j的前身是swagger-bootstrap-ui,前身swagger-bootstrap-ui是一个纯swagger-uiui皮肤项目

一开始项目初衷是为了写一个增强版本的swagger的前端ui,但是随着项目的发展,面对越来越多的个性化需求,不得不编写后端Java代码以满足新的需求,在swagger-bootstrap-ui的1.8.5~1.9.6版本之间,采用的是后端Java代码和Ui都混合在一个Jar包里面的方式提供给开发者使用.这种方式虽说对于集成swagger来说很方便,只需要引入jar包即可,但是在微服务架构下显得有些臃肿。

因此,项目正式更名为knife4j,取名knife4j是希望她能像一把匕首一样小巧,轻量,并且功能强悍,更名也是希望把她做成一个为Swagger接口文档服务的通用性解决方案,不仅仅只是专注于前端Ui前端.

swagger-bootstrap-ui的所有特性都会集中在knife4j-spring-ui包中,并且后续也会满足开发者更多的个性化需求.

主要的变化是,项目的相关类包路径更换为com.github.xiaoymin.knife4j前缀,开发者使用增强注解时需要替换包路径

后端Java代码和ui包分离为多个模块的jar包,以面对在目前微服务架构下,更加方便的使用增强文档注解(使用SpringCloud微服务项目,只需要在网关层集成UI的jar包即可,因此分离前后端)

目前主要支持以Java开发为主,并且是依赖于大环境下使用的Spring MVCSpring BootSpring Cloud框架.

当然,Knife4j也提供了离线版本,只要是符合Swagger的OpenAPI版本的规范JSON,都可以通过简单的配置进行适配,离线版本是适合于任何语言中使用Swagger的,非常的灵活、方便。

2、与 spring boot整合

2.1 引入依赖

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

2.2 配置Knife4j

  1. @Configuration
  2. @EnableSwagger2WebMvc
  3. public class Knife4jConfig {
  4. @Bean
  5. public Docket docket(Environment environment) {
  6. // 添加接口请求头参数配置 没有的话 可以忽略
  7. ParameterBuilder tokenPar = new ParameterBuilder();
  8. List<Parameter> pars = new ArrayList<>();
  9. tokenPar.name("token")
  10. .description("令牌")
  11. .defaultValue("")
  12. .modelRef(new ModelRef("string"))
  13. .parameterType("header").required(false).build();
  14. pars.add(tokenPar.build());
  15. return new Docket(DocumentationType.SWAGGER_2)
  16. .apiInfo(apiInfo())
  17. //是否启动swagger 默认启动
  18. .enable(true)
  19. //所在分组
  20. .groupName("yvioo")
  21. .select()
  22. //指定扫描的包路径
  23. .apis(RequestHandlerSelectors.basePackage("com.xx.xx.controller"))
  24. .paths(PathSelectors.any())
  25. .build()
  26. .globalOperationParameters(pars);
  27. }
  28. private ApiInfo apiInfo() {
  29. Contact author = new Contact("姓名", "地址", "邮箱");
  30. return new ApiInfo(
  31. "xx文档",
  32. "xx文档",
  33. "1.0",
  34. "",
  35. author,
  36. "",
  37. "",
  38. new ArrayList()
  39. );
  40. }
  41. }

2.3 放行Knife4j请求

  1. @Configuration
  2. public class WebMvcConfig extends WebMvcConfigurationSupport {
  3. @Override
  4. public void addResourceHandlers(ResourceHandlerRegistry registry) {
  5. registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
  6. registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
  7. }
  8. }

2.4 使用Knife4j注解标记接口

  1. @Api(tags = "测试路由")
  2. @RestController
  3. @RequestMapping("/test")
  4. public class TestController {
  5. @ApiOperation("测试get")
  6. @ApiImplicitParam(name = "name", value = "姓名", required = true)
  7. @GetMapping("test1")
  8. public String test1(@RequestParam(value = "name") String name) {
  9. return "hello," + name;
  10. }
  11. @ApiOperation("测试post")
  12. @PostMapping("test2")
  13. public String test2(@RequestBody TestEntity testEntity) {
  14. return testEntity.getName() + ":" + testEntity.getSex();
  15. }
  16. }
  1. @ApiModel
  2. @Data
  3. public class TestEntity {
  4. @ApiModelProperty(value = "姓名", required = true)
  5. private String name;
  6. @ApiModelProperty(value = "性别", required = true)
  7. private String sex;
  8. }

2.5 访问页面

访问地址:http://localhost:8080/doc.html


 

 

 3、其它功能

3.1 token认证参数设置

文档管理-->全局参数设置-->添加参数,可选择参数是放在 header 还是 query 中。

 3.2 离线文档

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

闽ICP备14008679号