• SpringBoot整合knife4j


    一、knife4j简介

    1、简介

    knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,它封装了swagger。前身是swagger-bootstrap-ui,取名kni4j是希望它能像一把匕首一样小巧,轻量,并且功能强悍!

    gitee地址:https://gitee.com/xiaoym/knife4j

    官方文档:https://doc.xiaominfo.com/

    效果演示:http://knife4j.xiaominfo.com/doc.html

    SpringBoot整合swagger参考:https://www.cnblogs.com/zwh0910/p/16539378.html

    2、核心功能

    该UI增强包主要包括两大核心功能:文档说明 和 在线调试

    • 文档说明(swagger也有):根据Swagger的规范说明,详细列出接口文档的说明,包括接口地址、类型、请求示例、请求参数、响应示例、响应参数、响应码等信息,使用swagger-bootstrap-ui能根据该文档说明,对该接口的使用情况一目了然。

    • 在线调试(swagger也有):提供在线接口联调的强大功能,自动解析当前接口参数,同时包含表单验证,调用参数可返回接口响应内容、headers、Curl请求命令实例、响应时间、响应状态码等信息,帮助开发者在线调试,而不必通过其他测试工具测试接口是否正确,简介、强大。

    • 个性化配置:通过个性化ui配置项,可自定义UI的相关显示信息

    • 离线文档:根据标准规范,生成的在线markdown离线文档,开发者可以进行拷贝生成markdown接口文档,通过其他第三方markdown转换工具转换成html或pdf,这样也可以放弃swagger2markdown组件。(在开发中,有时需要提供离线的接口文档,如果没有的话,需要手动编写,而knife4j可以节省写接口文档的时间,而且界面也好看)

    • 接口排序:自1.8.5后,ui支持了接口排序功能,例如一个注册功能主要包含了多个步骤,可以根据swagger-bootstrap-ui提供的接口排序规则实现接口的排序,step化接口操作,方便其他开发者进行接口对接

    二、SpringBoot集成knife4j

    1、在hcommon模块中的pom.xml文件中引入knife4j的依赖

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

    只需要导入到common模块即可,因为knife4j封装了swagger,swagger的注解,knife4j都可以用。

    2、在common工程中新建自定义自动配置类

    创建springfox提供的Docket分组对象

    import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Import;
    import springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration;
    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.EnableSwagger2;
    
    @Configuration
    @EnableSwagger2
    @EnableKnife4j
    @Import(BeanValidatorPluginsConfiguration.class)
    public class Swagger2Configuration {
    
        @Bean(value = "defaultApi2")
        public Docket defaultApi2() {
            Docket docket=new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())
                    //分组名称
                    .groupName("1.0")
                    .select()
                    //这里指定Controller扫描包路径
                    .apis(RequestHandlerSelectors.basePackage("com.heima"))
                    .paths(PathSelectors.any())
                    .build();
            return docket;
        }
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder()
                    .title("黑马头条API文档")
                    .description("黑马头条API文档")
                    .version("1.0")
                    .build();
        }
    }

    以上有两个注解需要特别说明,如下表:

    注解说明
    @EnableSwagger2 该注解是Springfox-swagger框架提供的使用Swagger注解,该注解必须加
    @EnableKnife4j 该注解是knife4j提供的增强注解,Ui提供了例如动态参数、参数过滤、接口排序等增强功能,如果你想使用这些增强功能就必须加该注解,否则可以不用加

    3、common模块中的resources目录中新增以下目录和文件

    文件:resources/META-INF/Spring.factories

    spring.factories内容如下:

    org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
      com.heima.common.swagger.SwaggerConfiguration, \
      com.heima.common.knife4j.Swagger2Configuration

    这样,我们的项目就已经集成了knife4j了。

    4、启动微服务,浏览器访问:http://host:port/doc.html

    进入如下界面:

    在文档管理-离线文档中,

    点击下载Markdown文档,就会现在1.0.md文件,内容如下所示:

    发现响应示例不完整,我们手动修改以下即可。

  • 相关阅读:
    创建Variant数组
    ASP与存储过程(Stored Procedures)
    FileSystemObject对象成员概要
    Kotlin 朱涛9 委托 代理 懒加载 Delegate
    Kotlin 朱涛 思维4 空安全思维 平台类型 非空断言
    Kotlin 朱涛7 高阶函数 函数类型 Lambda SAM
    Kotlin 朱涛16 协程 生命周期 Job 结构化并发
    Proxy 代理模式 动态代理 cglib MD
    RxJava 设计理念 观察者模式 Observable lambdas MD
    动态图片 Movie androidgifdrawable GifView
  • 原文地址:https://www.cnblogs.com/zwh0910/p/16539597.html
Copyright © 2020-2023  润新知