当前位置:   article > 正文

SpringBoot教程(十九) | SpringBoot集成knife4j_knife4j-openapi3-spring-boot-starter

knife4j-openapi3-spring-boot-starter

首先介绍一下Knife4j. 就是一款接口文档框架,跟swagger类似。 但是整合了很多swagger的功能,页面比swagger美观。现在大有取代swagger之势

官方文档地址: https://doc.xiaominfo.com/docs/quick-start

其实主要的集成方式,在文档里都已经描述了,并且我之前也写过集成SpringBoot集成swagger的文章,大同小异。我用的是SpringBoot2. 没用3是因为没装JDK17. 都这个阶段了,还是建议用3.

在唠叨一下,knife4j 对与openapi2和openapi3都支持,我这里选用的是openapi3.

开始集成,老样子,先引入依赖:

  1. <!-- 接口文档 -->
  2. <dependency>
  3. <groupId>com.github.xiaoymin</groupId>
  4. <artifactId>knife4j-openapi3-spring-boot-starter</artifactId>
  5. <version>4.4.0</version>
  6. </dependency>

然后在配置文件里添加配置:

  1. knife4j:
  2. enable: true
  3. openapi:
  4. title: 接口文档
  5. description: "接口文档生成"
  6. email: ""
  7. concat: admin
  8. url: https://docs.xiaominfo.com
  9. version: v4.0
  10. license: Apache 2.0
  11. license-url: https://stackoverflow.com/
  12. terms-of-service-url: https://stackoverflow.com/
  13. group:
  14. test1:
  15. group-name: ai聊天室
  16. api-rule: package
  17. api-rule-resources:
  18. - comn.xxx.xx.cms

我这个配置的好像不太对, 但是也无关紧要,能处理。 详细配置可以参考官网上有个gitee上的代码。

然后就是写注解了,需要在Controller上和vo上写注解,注意openapi2和openapi3的注解是不一样的。这里就简单给个例子吧:

  1. @RestController
  2. @RequestMapping("/api/faqType")
  3. @Tag(name="FAQ类型相关接口")
  4. public class FaqTypeController {
  5. private final FaqTypeBiz faqTypeBiz;
  6. // 构造方法注入
  7. public FaqTypeController(FaqTypeBiz faqTypeBiz) {
  8. this.faqTypeBiz = faqTypeBiz;
  9. }
  10. @Operation(summary = "保存Faq类型")
  11. @PostMapping("/save")
  12. public Result save(@RequestBody FaqTypeVO faqTypeVO){
  13. faqTypeBiz.saveFaqType(faqTypeVO);
  14. return Result.success();
  15. }
  16. }
  1. @Schema(description = "faq类型分页查询参数")
  2. @Data
  3. public class FaqTypePageReqVO extends BasePageVO {
  4. /**
  5. * 编号
  6. */
  7. @Schema(description = "编号")
  8. private String code;
  9. /**
  10. * 标题
  11. */
  12. @Schema(description = "标题")
  13. private String title;
  14. /**
  15. * 内容
  16. */
  17. @Schema(description = "内容")
  18. private String content;
  19. /**
  20. * 主管部门
  21. */
  22. @Schema(description = "主管部门")
  23. private String department;
  24. }

然后就可以启动了,如果启动报错,这个错误我在swagger里也写过:

  1. spring:
  2. mvc:
  3. pathmatch:
  4. matching-strategy: ant_path_matcher

文章传送:https://lsqingfeng.blog.csdn.net/article/details/123689652?spm=1001.2014.3001.5502

然后启动项目: 输入: ip:port/doc.html 就可以打开接口文档了,长的比swagger强。

这里在说一下,如果项目中添加了拦截器,就会导致接口文档出不来,就需要放开才行,我之前也讲过这个问题。

传送: https://lsqingfeng.blog.csdn.net/article/details/123678701?spm=1001.2014.3001.5502

在文章的第四部分,就是拦截器和跨域冲突。

我按照文章里的方式试了一下,发现还是不行。 所以如果遇到这个问题的同学,请使用如下最新的解决方式:还是添加配置类

  1. @Configuration
  2. @Slf4j
  3. public class SecurityConfiger implements WebMvcConfigurer {
  4. @Autowired
  5. private VerifyInterceptor verifyInterceptor;
  6. @Override
  7. public void addInterceptors(InterceptorRegistry registry) {
  8. InterceptorRegistration registration = registry.addInterceptor(verifyInterceptor);
  9. registration
  10. .addPathPatterns("/**")
  11. .excludePathPatterns("/oauth/callback")
  12. .excludePathPatterns("/doc.html/**")
  13. .excludePathPatterns("/swagger-resources/**")
  14. .excludePathPatterns("/error")
  15. .excludePathPatterns("/webjars/**")
  16. .excludePathPatterns("/doc.html")
  17. .excludePathPatterns("/api")
  18. .excludePathPatterns("/api-docs")
  19. .excludePathPatterns("/api-docs/**")
  20. .excludePathPatterns("/doc.html/**")
  21. .excludePathPatterns("/v2/**")
  22. .excludePathPatterns("/v3/**")
  23. .excludePathPatterns("/actuator/**");
  24. }
  25. @Override
  26. public void addResourceHandlers(ResourceHandlerRegistry registry) {
  27. registry.addResourceHandler("/**")
  28. .addResourceLocations("classpath:/static/");
  29. registry.addResourceHandler("swagger-ui.html")
  30. .addResourceLocations("classpath:/META-INF/resources/");
  31. registry.addResourceHandler("/webjars/**")
  32. .addResourceLocations("classpath:/META-INF/resources/webjars/");
  33. registry.addResourceHandler("/doc.html")
  34. .addResourceLocations("classpath:/META-INF/resources/");
  35. }
  36. }

这个写的比之前的代码多一下,排除支持的也更多一些。

好了,再会!

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

闽ICP备14008679号