• 【SpringBoot项目中Knife4j在线API文档】


    目录

    1. Knife4j在线API文档基本使用

    2. 配置API文档信息


    1. Knife4j在线API文档基本使用

    Knife4j是一款基于Swagger 2的在线API文档框架。

    使用Knife4j的基础步骤:

    • 添加依赖
    • application.properties / application.yml中添加配置
    • 在项目中添加配置类

    关于依赖项:

    1. <!-- Knife4j Spring Boot:在线API -->
    2. <dependency>
    3. <groupId>com.github.xiaoymin</groupId>
    4. <artifactId>knife4j-spring-boot-starter</artifactId>
    5. <version>2.0.9</version>
    6. </dependency>

    注意:以上依赖项的版本是2.0.9,适用于Spring Boot 2.6以下(不含2.6)版本。

    关于配置文件中的配置,主要是开启此框架的增强模式(Knife4j定义的概念),需要添加:

    knife4j.enable=true

    关于配置类:

    1. import com.github.xiaoymin.knife4j.spring.extension.OpenApiExtensionResolver;
    2. import lombok.extern.slf4j.Slf4j;
    3. import org.springframework.beans.factory.annotation.Autowired;
    4. import org.springframework.context.annotation.Bean;
    5. import org.springframework.context.annotation.Configuration;
    6. import springfox.documentation.builders.ApiInfoBuilder;
    7. import springfox.documentation.builders.PathSelectors;
    8. import springfox.documentation.builders.RequestHandlerSelectors;
    9. import springfox.documentation.service.ApiInfo;
    10. import springfox.documentation.service.Contact;
    11. import springfox.documentation.spi.DocumentationType;
    12. import springfox.documentation.spring.web.plugins.Docket;
    13. import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
    14. /**
    15. * Knife4j配置类
    16. *
    17. * @author java@tedu.cn
    18. * @version 0.0.1
    19. */
    20. @Slf4j
    21. @Configuration
    22. @EnableSwagger2WebMvc
    23. public class Knife4jConfiguration {
    24. /**
    25. * 【重要】指定Controller包路径
    26. */
    27. private String basePackage = "cn.tedu.csmall.product.controller";
    28. /**
    29. * 分组名称
    30. */
    31. private String groupName = "product";
    32. /**
    33. * 主机名
    34. */
    35. private String host = "http://java.tedu.cn";
    36. /**
    37. * 标题
    38. */
    39. private String title = "商城在线API文档--商品管理";
    40. /**
    41. * 简介
    42. */
    43. private String description = "商城在线API文档--商品管理";
    44. /**
    45. * 服务条款URL
    46. */
    47. private String termsOfServiceUrl = "http://www.apache.org/licenses/LICENSE-2.0";
    48. /**
    49. * 联系人
    50. */
    51. private String contactName = "Java教学研发部";
    52. /**
    53. * 联系网址
    54. */
    55. private String contactUrl = "http://java.tedu.cn";
    56. /**
    57. * 联系邮箱
    58. */
    59. private String contactEmail = "java@tedu.cn";
    60. /**
    61. * 版本号
    62. */
    63. private String version = "1.0.0";
    64. @Autowired
    65. private OpenApiExtensionResolver openApiExtensionResolver;
    66. public Knife4jConfiguration() {
    67. log.debug("创建配置类对象:Knife4jConfiguration");
    68. }
    69. @Bean
    70. public Docket docket() {
    71. String groupName = "1.0.0";
    72. Docket docket = new Docket(DocumentationType.SWAGGER_2)
    73. .host(host)
    74. .apiInfo(apiInfo())
    75. .groupName(groupName)
    76. .select()
    77. .apis(RequestHandlerSelectors.basePackage(basePackage))
    78. .paths(PathSelectors.any())
    79. .build()
    80. .extensions(openApiExtensionResolver.buildExtensions(groupName));
    81. return docket;
    82. }
    83. private ApiInfo apiInfo() {
    84. return new ApiInfoBuilder()
    85. .title(title)
    86. .description(description)
    87. .termsOfServiceUrl(termsOfServiceUrl)
    88. .contact(new Contact(contactName, contactUrl, contactEmail))
    89. .version(version)
    90. .build();
    91. }
    92. }

    注意:务必检查以上配置类中的basePackage属性的值,必须是当前项目中控制器类所在的包!

    在项目中已经完成以上步骤后,启动项目,打开浏览器,通过 http://localhost:8080/doc.html 即可访问在线API文档

    2. 配置API文档信息

    @Api:添加在控制器类上

    • 此注解的tags属性,可配置模块名称,可以在模块名称中使用编号,例如:01. 品牌管理模块,最终将按照编号升序排列

    @ApiOperation:添加在控制器类中处理请求的方法上

    • 此注解的value属性,可配置业务名称

    @ApiOperationSupport:添加在控制器类中处理请求的方法上

    • 此注解的order属性(int类型),可配置业务的排序序号,最终将升序排列

    @ApiModelProperty:添加在POJO类型的属性上

    • 此注解的value属性,可配置参数名称(说明)
    • 此注解的required属性,可配置是否必须提交此参数
    • 此注解的example属性,可配置此请求参数的示例值
    • @ApiImplicitParam:添加在控制器类中处理请求的方法上,用于对未封装的请求参数添加说明(例如Long id参数)

      • 必须配置此注解的name属性,取值为方法的参数名称,表示当前注解对哪个参数进行说明
      • 此注解的value属性,可配置参数名称(说明)
      • 此注解的required属性,可配置是否必须提交此参数
      • 此注解的dataType属性,可配置参数的数据类型(例如取值为"long"
      • 此注解的example属性,可配置此请求参数的示例值
    • @ApiImplicitParams:添加在控制器类中处理请求的方法上,此注解的value属性是@ApiImplicitParam注解的数组类型,当需要使用@ApiImplicitParam对多个未封装参数进行说明时,需要将多个@ApiImplicitParam注解的配置作为当前注解的参数

    1. @ApiOperation("删除类别")
    2. @ApiOperationSupport(order = 200)
    3. @ApiImplicitParams({
    4. @ApiImplicitParam(name = "id", value = "类别ID", required = true, dataType = "long"),
    5. @ApiImplicitParam(name = "userId", value = "用户ID", required = true, dataType = "long")
    6. })
    7. @PostMapping("/delete")
    8. public void delete(Long userId, Long id) {}

    个人主页:居然天上楼

    感谢你这么可爱帅气还这么热爱学习~~

    人生海海,山山而川

    你的点赞👍 收藏⭐ 留言📝 加关注✅

    是对我最大的支持与鞭策

  • 相关阅读:
    MyBatis一对多查询,MyBatis中resultMap的使用,MyBatis中collection注意事项,MyBatis的级联搜索
    安装显卡驱动报错
    【cartographer_ros】六: 发布和订阅路标landmark信息
    1234234234
    零基础自学SQL课程 | 相关子查询
    【饭谈】自动化有三宝:工资高,福利好,代码和人总有一个能跑
    序列到序列学习(seq2seq)
    NPN和PNP
    Java入门
    java文件上传下载漏洞修复工具类
  • 原文地址:https://blog.csdn.net/weixin_72612071/article/details/128138827