Knife4j系列--使用-教程-实例-配置 详细讲解

这篇具有很好参考价值的文章主要介绍了Knife4j系列--使用-教程-实例-配置 详细讲解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Knife4j

Knife4j是基于springboot构建的一个文档生成工具,它可以让开发者为我们的应用生成API文档,目的是可以更加方便的基于API文档进行测试,生成的文档还可以导出,然后给到前端开发团队,前端开发团队可以基于API接口写具体的调用。

1 Knife4j的优点

  • Knife4j 功能强大,易于操作。
  • Knife4j 的UI界面非常美观,使用非常流畅。
  • Knife4j 可以高度定制化,让其符合你的项目需求,提升用户体验。
  • Knife4j 的支持性比较好,可以满足大部分的开发需求。

2 Knife4j快速上手(掌握基本应用即可)

2.1 pom.xml添加依赖

在你的SpringBoot项目的pom.xml文件中,添加如下依赖:

<!--添加Knife4j依赖-->
<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-openapi2-spring-boot-starter</artifactId>
    <version>4.1.0</version>
</dependency>

2.2 配置Swagger的相关信息

工程目录下创建config.Knife4jConfig

package cn.tedu.weibo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;

@Configuration
@EnableSwagger2WebMvc
public class Knife4jConfig {//对于配置类要求可以看懂即可,不用反复去写,将来可以CV
    //配置Swagger2的Docket的Bean实例
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                // apiInfo():配置 API 的一些基本信息,比如:文档标题title,文档描述description,文档版本号version
                .apiInfo(apiInfo())
                // select():生成 API 文档的选择器,用于指定要生成哪些 API 文档
                .select()
                // apis():指定要生成哪个包下的 API 文档
                .apis(RequestHandlerSelectors.basePackage("cn.tedu.weibo.controller"))
                // paths():指定要生成哪个 URL 匹配模式下的 API 文档。这里使用 PathSelectors.any(),表示生成所有的 API 文档。
                .paths(PathSelectors.any())
                .build();
    }
    private static final String API_TILE="微博项目";
    //文档信息配置
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                // 文档标题
                .title(API_TILE)
                // 文档描述信息
                .description("微博项目在线API文档")
                // 文档版本号
                .version("1.0")
                .build();
    }
}

2.3 查看生成的接口文档

在 SpringBoot 项目启动后,访问 http://localhost:8080/doc.html 地址即可查看生成的Knife4j接口文档。

knife4j,spring boot,spring,java

3 常用注解应用分析

  • @Api注解

    添加在控制器类上的注解,通过此注解的tags属性可以修改原本显示控制器类名称的位置的文本,通常,建议在配置的tags属性值上添加序号,例如:“01. 用户模块”、“02. 微博模块”,则框架会根据值进行排序。

    • 参数说明

      • tags:配置模块名称
    • 代码示例

      // 1. UserController
      @Api(tags = "01.用户管理模块")
      public class UserController {...}
      
      // 2. WeiboController
      @Api(tags = "02.微博管理模块")
      public class WeiboController {...}
      
      // 3. CommentController
      @Api(tags = "03.评论管理模块")
      public class CommentController {...}
      
    • 文档效果(重启工程并刷新页面:http://localhost:8080/doc.html#/home
      knife4j,spring boot,spring,java

  • @ApiOperation注解

    添加在控制器类中处理请求的方法上的注解,用于配置此方法处理的请求在API文档中显示的文本。

    • 参数说明

      • value:配置业务名称
    • 代码示例

      此处以注册功能为例,其他所有方法请添加说明

      /**注册功能*/
      @RequestMapping("reg")
      @ApiOperation(value = "注册功能")
      public int reg(@RequestBody UserRegDTO userRegDTO){...}
      
    • 文档效果(重启工程并刷新页面:http://localhost:8080/doc.html#/home

knife4j,spring boot,spring,java

  • @ApiModelProperty注解

    是添加在POJO类的属性上的注解,用于对请求参数或响应结果中的某个属性进行说明,
    主要通过其value属性配置描述文本,并可通过example属性配置示例值。

    • 参数说明

      • value属性:配置参数名称
      • required属性:配置是否必须提交此请求参数
      • example属性:配置示例值

      注意:如果配置了 required=true,只是一种显示效果,Knife4j框架并不具备检查功能

    • 代码示例

      以注册功能UserRegDTO为例

      @Data
      public class UserRegDTO {
          @ApiModelProperty(value = "用户名", required = true, example = "赵丽颖")
          private String username;
          @ApiModelProperty(value = "密码", required = true)
          private String password;
          @ApiModelProperty(value = "昵称", required = true)
          private String nickname;
      }
      
    • 文档效果(重启工程并刷新页面:http://localhost:8080/doc.html#/home

      knife4j,spring boot,spring,java

  • @ApiImplicitParam注解

    添加在控制器类中处理请求的方法上的注解,主要用于配置非封装(非XxxDTO/XxxParam的参数)的参数

    • 参数说明

      • name:指定参数名称(参数变量名
      • value:配置参数名称
      • dataType:配置数据类型
      • required:配置是否必须提交此请求参数
      • example:配置参数的示例值

      注意:一旦使用此注解,各个参数的数据类型默认都会显示String,可以通过dataType指定数据类型

    • 代码示例

      此处以微博详情功能为例

      @ApiImplicitParam(name = "id", value = "微博", required=true, dataType = "int")
      public WeiboDetailVO selectById(int id){...}
      
    • 文档效果(重启工程并刷新页面:http://localhost:8080/doc.html#/home
      knife4j,spring boot,spring,java

  • @ApiImplicitParams注解

    添加在控制器类中处理请求的方法上的注解,当方法有多个非封装的参数时,在方法上添加此注解,并在注解内部通过@ApiImplicitParam数组配置多个参数。

    • 代码示例

      此处以微博详情功能为例

      /**微博详情页功能*/
      @GetMapping("selectById")
      @ApiOperation(value = "微博详情功能")
      @ApiImplicitParams(value = {
          @ApiImplicitParam(name = "id", value = "微博", required=true, dataType = "int"),
          @ApiImplicitParam(name = "username", value = "用户名", required=true)
      })
      // 额外增加username参数,仅仅用于测试
      public WeiboDetailVO selectById(int id, String username){
          return weiboMapper.selectById(id);
      }
      
    • 文档效果(重启工程并刷新页面:http://localhost:8080/doc.html#/home

      knife4j,spring boot,spring,java

  • @ApiIgnore注解

    添加在处理请求的方法的参数上,用于表示API文档框架应该忽略此参数

    此处以发布微博功能的HttpSession参数为例

    • 代码示例

      // 参数中添加@ApiIgnore注解
      public int insert(@RequestBody WeiboDTO weiboDTO, @ApiIgnore HttpSession session){...}
      
    • 文档效果(重启工程并刷新页面:http://localhost:8080/doc.html#/home

      knife4j,spring boot,spring,java

4 限制请求方式

API文档中默认每个功能会展示7种请求方式,遵循RESTful规则将 @RequestMapping 注解修改为对应请求方法的注解,比如:@GetMapping @PostMapping @PutMapping @DeleteMapping 注解,重启工程后刷新测试。

knife4j,spring boot,spring,java

5 导出离线API文档

  1. 文档管理 - 离线文档 中存在多种格式的导出格式

knife4j,spring boot,spring,java

  1. 选择合适的文档格式,导出即可到本地磁盘

6 洞悉Knife4j生成API文档原理 (了解)

  1. 自定义注解(模拟Knife4j中注解的定义)
 @Retention(RetentionPolicy.RUNTIME)
 @Target(ElementType.FIELD)
 @interface ApiProperty{//interface,默认继承Annotation接口
  String value();
  boolean required();
  String example() default "";
 }
 

2.通过注解描述类上属性

class PointDto{
    @ApiProperty(value = "x轴坐标",required = true,example = "10")
    private int x;
    @ApiProperty(value = "y轴坐标",required = true,example = "10")
    private int y;
}

3.通过反射获取注解内容

public class AnnotationTests {
    @Test
    public void doTest() throws NoSuchFieldException {
        //获取PointDto类型的字节码对象(反射起点就是字节码对象)
        Class c1=PointDto.class;
        //获取PointDao类型中的x属性(通过反射获取)
        Field x=c1.getDeclaredField("x");
        //获取x属性上的ApiProperty注解(通过反射获取)
        ApiProperty annotation = x.getAnnotation(ApiProperty.class);
        //获取注解中value等属性的值
        String value = annotation.value();
        String example = annotation.example();
        System.out.println(value+"/"+example);
    }
}

4.通过html/css/js构建页面(doc.html)文章来源地址https://www.toymoban.com/news/detail-684961.html

到了这里,关于Knife4j系列--使用-教程-实例-配置 详细讲解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot3中Swagger整合knife4j和springdoc的配置说明

      springboot3开始javax包改成了jakarta,而swagger-oas等包中依然使用的是javax所以报错。另外springfox已经过时了,两年没更新了,并且不支持OpenAPI3 标准,而SpringBoot3只支持OpenAPI3规范,所以要迁移到springdoc Knife4J是一款基于Swagger快速生成API文档和调试平台的开源工具,它可以轻松地

    2024年02月04日
    浏览(38)
  • Knife4j框架介绍

    Knife4j是一款基于Swagger 2的在线API文档框架,是日常开发中很常用的框架,基于此框架,后端可以和前端开发人员进行高效沟通。 使用Knife4j框架只需要以下三步: 1:添加Knife4j的依赖 (当前建议使用的Knife4j版本,只适用于Spring Boot 2.6以下版本,不含Spring Boot 2.6) 2:在主配置

    2024年02月13日
    浏览(23)
  • knife4j接口文档

    knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,取名knife4j是希望它能像一把匕首一样小巧,轻量,并且功能强悍!其底层是对Springfox的封装,使用方式也和Springfox一致,只是对接口文档UI进行了优化。 核心功能 : 文档说明 :根据Swagger的规范说明

    2023年04月08日
    浏览(26)
  • SpringBoot 整合knife4j

    Knife4j是一款基于Swagger 2的在线API文档框架 添加依赖 创建 Swagger 配置依赖 application.yml配置文件 响应参数 tips: http://127.0.0.1:8080/doc.html 这里端口,就是你运行项目的端口 springboot 中 knife4j的完整参数如下: 接口添加作者 添加作者有俩种方式 在方法上使用注解 @ApiOperationSupport

    2024年02月14日
    浏览(31)
  • SpringBoot整合Knife4j

    ✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉🍎个人主页:Leo的博客💞当前专栏: 循序渐进学SpringBoot ✨特色专栏: MySQL学习 🥭本文内容:SpringBoot整合Knife4j 📚个人知识库: Leo知识库,欢迎大家访问

    2024年04月11日
    浏览(25)
  • springboot配置swagger/knife4j时出现的Unresolvable class definition for class …异常

    抽取出其中的关键原因描述: nested exception is java.lang.IllegalArgumentException: Unresolvable class definition for class [springfox.documentation.spring.web.OnServletBasedWebApplication] springfox.documentation.common.ClassPresentInClassPathCondition 进行原因排查后,发现是依赖之间版本问题的冲突导致,下面提供一个能

    2024年02月12日
    浏览(33)
  • 【Java - 框架 - Knife4j】随笔

    项目文件; 【1】 【2】 【3】

    2024年01月21日
    浏览(29)
  • Knife4j文档请求异常(更新)

    在SpringBoot项目中,如果是分不同的模块开发。 注解配置 @EnableSwagger2WebMvc 不在启动类上,而是加到了其他模块的注解中,可能会导致这种情况发生。 我的是common一个单独的模块,在common模块中配置了WebMvcConfig。 然后在WebMvcConfig类上面加了注解 @EnableSwagger2WebMvc . 那么,解决方

    2024年01月18日
    浏览(31)
  • knife4j依赖报错-----------解决方法

    1.可以尝试clean 再刷新maven 2.从中央仓库中重新加载 快捷键:Ctrl+Alt+Shift+S 或者file下打开Project Structure... 选择上面的+号,.m2文件夹下,如果有下载好的 knife4j 文件可以全部删除或者移动到别的位置,再继续添加,也可以选择Jar 找到knife4j文件指定其中一个文件,把上图中报错

    2024年02月12日
    浏览(23)
  • knife4j生产环境资源屏蔽

    knife4j是目前比较主流的自动API文档生成工具,在生产环境使用的过程中,我们一般会屏蔽或者去除Swagger的文档口径,防止接口信息泄露,保证系统安全。 但是最近在开发过程中使用knife4j-spring-boot-starter 3.0.2过程中,发现根据官网说明配置后,还是有部分Swagger的文档口径无法

    2024年02月07日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包