在Spring中使用Knife4j进行API文档生成与管理的操作方法

 更新时间:2024年12月16日 10:18:21   作者:moonpower_gn  
Knife4j 是为Java MVC 框架(如Spring Boot、Spring MVC等)集成 Swagger 生成 API 文档的增强解决方案,它基于 Swagger 的核心功能,通过定制化的前端界面和一些额外的特性,本文介绍了在Spring中使用Knife4j进行API文档生成与管理的操作方法,需要的朋友可以参考下

什么是 Knife4j

Knife4j 是为Java MVC 框架(如Spring Boot、Spring MVC等)集成 Swagger 生成 API 文档的增强解决方案,它基于 Swagger 的核心功能,通过定制化的前端界面和一些额外的特性,拥有比原生 Swagger UI 更美观、直观的操作界面。

Knife4j支持离线文档下载,方便在没有网络连接的情况下查阅 API 文档,拥有接口排序功能,使得 API 文档的结构更加清晰有序,也具备动态参数调试能力,能够实时修改请求参数并查看响应结果,方便开发过程中的接口测试。

在Spring中集成 Knife4j 的准备工作

搭建好一个基于Spring的项目环境,可以是 Spring Boot 项目或者传统的 Spring MVC 项目,以 Spring Boot 项目为例,首先需要在 pom.xml 文件中引入必要的 Spring Web 相关依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

在 Maven 项目中,添加 Knife4j 的核心依赖:

<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-spring-boot-starter</artifactId>
    <version>3.0.2</version>
</dependency>

在config层中创建一个配置类来配置 Knife4j:

@Configuration
@EnableKnife4j
public class Knife4jConfig {
 
    @Bean
    public Docket docket() {
        return new Docket(DocumentationPlugin.DEFAULT_GROUP_NAME)
              .apiInfo(apiInfo())
              .select()
              .apis(RequestHandlerSelectors.basePackage("//Controller包路径")) 
              .paths(PathSelectors.any())
              .build();
    }
 
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
              .title("我的接口文档")
              .description("我的接口文档")
              .version("2.0")
              .build();
    }
}

在上述代码中 @EnableKnife4j  注解开启了 Knife4j 在 Spring 项目中的支持,Docket 的配置与原生 Swagger 类似,用于指定要扫描的 API 接口范围和基本的文档信息,通过RequestHandlerSelectors.basePackage  确定了需要生成文档的 Controller 所在的包路径, PathSelectors.any()  表示包含所有的 API 路径。

启动项目查看 Knife4j UI

启动 Spring 项目后,访问http://localhost:8080/doc.html (默认端口为 8080,如果项目中配置了其他端口则相应替换),即可打开 Knife4j 的界面。在这个界面上,可以看到项目中所有被扫描到的 API 接口信息,包括接口名称、请求方法、请求参数、响应示例等,相比原生的Swagger UI,界面更加美观和易于操作,例如接口列表的展示更加清晰,搜索功能更加便捷等。

图示如下:

API 信息定制

在 Spring 的 Controller 类及方法中,使用Knife4j支持的 Swagger 注解来详细描述 API,例如:

@RestController
@RequestMapping("/api")
@Api(tags = "我的api")
public class UserController {
 
    @GetMapping("/users")
    @ApiOperation("用户列表")
    public List<User> getUsers() {
        // 实际业务逻辑代码,这里返回用户列表
        return userService.getUsers();
    }
}
  • @Api 注解为整个 Controller 类添加一个标签,方便在 Knife4j UI 中对接口进行分类查看。
  • @ApiOperation  注解详细描述了每个 API 方法的功能,该描述会在 Knife4j 界面中对应接口的详情页中展示,让使用者能够快速了解接口的用途。

再次启动项目查看:

成功显示更改信息。

总结

除了基础的配置和使用,还能通过以下方式扩展 Knife4j 的应用,在复杂的微服务架构中,利用其分组功能,为不同的微服务模块创建独立的 Docket  实例并设置不同 groupName ,使各模块 API 文档清晰区分,方便维护和查看。

对于 API 版本管理,除了在 URL 中体现版本,还可以结合自定义请求头,在 Knife4j 配置中精准匹配不同版本的接口路径,展示版本演进。

在安全方面,与多种认证方式深度集成,如 OAuth2 等,通过详细配置 securitySchemes  和 securityContexts ,在 API 文档中准确呈现复杂的认证流程和要求,帮助使用者更好地理解和接入安全的 API 服务。

总之,掌握在Spring中使用Knife4j的基本使用,能够高效地为项目生成友好且实用的API文档,提升整个项目开发过程中的沟通协作效率以及接口管理的便利性。

以上就是在Spring中使用Knife4j进行API文档生成与管理的操作方法的详细内容,更多关于Spring API文档生成与管理的资料请关注脚本之家其它相关文章!

相关文章

  • SpringBoot+MyBatis+AOP实现读写分离的示例代码

    SpringBoot+MyBatis+AOP实现读写分离的示例代码

    高并发这个阶段,肯定是需要做MySQL读写分离的。本文主要介绍了SpringBoot+MyBatis+AOP实现读写分离的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • resty upload无需依赖的文件上传与下载

    resty upload无需依赖的文件上传与下载

    这篇文章主要为大家介绍了resty upload中无需依赖的文件上传与下载过程,有需要的朋友可以借鉴参考下,希望能够有所帮助祝大家多多进步,早日升职加薪
    2022-03-03
  • 使用Jenkins Pipeline自动化构建发布Java项目的方法

    使用Jenkins Pipeline自动化构建发布Java项目的方法

    这篇文章主要介绍了使用Jenkins Pipeline自动化构建发布Java项目的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-04-04
  • Springboot @WebFilter无法注入其他Bean的示例问题

    Springboot @WebFilter无法注入其他Bean的示例问题

    这篇文章主要介绍了Springboot @WebFilter无法注入其他Bean的示例问题,本文通过示例代码给大家分享解决方法,需要的朋友可以参考下
    2021-09-09
  • 一篇文章带你深入了解Java基础

    一篇文章带你深入了解Java基础

    这篇文章主要给大家介绍了关于Java中方法使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-08-08
  • SpringBoot使用JDBC获取相关的数据方法

    SpringBoot使用JDBC获取相关的数据方法

    这篇文章主要介绍了SpringBoot使用JDBC获取相关的数据方法,JDBC与数据库建立连接、发送 操作数据库的语句并处理结果,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03
  • Spring Boot的应用启动与关闭的方法

    Spring Boot的应用启动与关闭的方法

    本篇文章主要介绍了Spring Boot的应用启动与关闭的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • Spring整合Mybatis思路梳理总结

    Spring整合Mybatis思路梳理总结

    mybatis-plus是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生,下面这篇文章主要给大家介绍了关于SpringBoot整合Mybatis-plus案例及用法实例的相关资料,需要的朋友可以参考下
    2022-12-12
  • Java防止xss攻击附相关文件下载

    Java防止xss攻击附相关文件下载

    首先说一下思路,防止这种类似于注入攻击,就是使用拦截器(Filter)处理特殊字符或过滤特殊字符 今天介绍一个方法,利用覆盖Servlet的getParameter方法达到处理特殊字符的目的来解决(防止)Xss攻击 web.xml,需要的朋友可以参考下
    2020-02-02
  • SpringBoot项目的配置文件中设置server.port不生效问题

    SpringBoot项目的配置文件中设置server.port不生效问题

    这篇文章主要介绍了SpringBoot项目的配置文件中设置server.port不生效问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11

最新评论