关于knife4j的使用及配置

 更新时间:2023年06月26日 08:38:48   作者:_不负时光  
这篇文章主要介绍了关于knife4j的使用及配置,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

knife4j的使用配置

关键词:swagger、springfox、swagger-bootstrap-ui

说明:一款更加美化,实用、方便生成漂亮离线文档的接口文档工具

第一步

引入依赖

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

第二步

配置swagger

@EnableSwagger2
@Component
public class Swagger2 {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("default")
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("xxx.controller"))
                .paths(PathSelectors.any())
                .build();
    }
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("xxx接口说明")
                .description("OpenAPI规范接口描述")
                .version("v1.0")
                .contact(new Contact("xxx公司", "http://xxx.com/", "xxx@xxx.com"))
                .license("License")
                .licenseUrl("http://xxx.com/")
                .build();
    }
}

第三步

控制器加swagger-ui 注解(略)

第四步

启动访问

启动springboot 项目

访问:localhost:port/doc.html

knife4j 简单使用

Swagger作为一款API文档生成工具,虽然功能已经很完善了,但是还是有些不足的地方。

knife4j简介

knife4j完全遵循了springfox-swagger中的使用方式,并在此基础上做了增强功能,如果用过Swagger,可以无缝切换到knife4j。

快速开始

1、 在pom.xml中增加knife4j的相关依赖

<!--整合Knife4j-->
<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-spring-boot-starter</artifactId>
    <version>2.0.4</version>
</dependency>

2、 在Swagger2Config中增加一个@EnableKnife4j注解,该注解可以开启knife4j的增强功能

/**
 * Swagger2API文档的配置
 */
@Configuration
@EnableSwagger2
@EnableKnife4j
public class Swagger2Config {
}

3、运行我们的SpringBoot应用,访问API文档地址即可查看:

http://localhost:8080/doc.html

功能特点

对比下Swagger,看看使用knife4j和它有啥不同之处

1、 返回结果集支持折叠,方便查看

2、 请求参数有JSON校验功能

3、 knife4j支持导出离线文档,方便发送给别人,支持Markdown格式

直接选择文档管理->离线文档功能,然后选择下载Markdown即可

4、忽略参数属性

有时候我们创建和修改的接口会使用同一个对象作为请求参数,但是我们创建的时候并不需要id,而修改的时候会需要id,此时我们可以忽略id这个属性。

比如这里的创建商品接口,id、商品数量、商品评论数量都可以让后台接口生成无需传递,可以使用knife4j提供的@ApiOperationSupport注解来忽略这些属性

@Api(tags = "PmsBrandController", description = "商品品牌管理")
@Controller
@RequestMapping("/brand")
public class PmsBrandController {
    @Autowired
    private PmsBrandService brandService;
    private static final Logger LOGGER = LoggerFactory.getLogger(PmsBrandController.class);
    @ApiOperation("添加品牌")
    @ApiOperationSupport(ignoreParameters = {"id","productCount","productCommentCount"})
    @RequestMapping(value = "/create", method = RequestMethod.POST)
    @ResponseBody
    public CommonResult createBrand(@RequestBody PmsBrand pmsBrand) {
        CommonResult commonResult;
        int count = brandService.createBrand(pmsBrand);
        if (count == 1) {
            commonResult = CommonResult.success(pmsBrand);
            LOGGER.debug("createBrand success:{}", pmsBrand);
        } else {
            commonResult = CommonResult.failed("操作失败");
            LOGGER.debug("createBrand failed:{}", pmsBrand);
        }
        return commonResult;
    }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 基于Pinpoint对SpringCloud微服务项目实现全链路监控的问题

    基于Pinpoint对SpringCloud微服务项目实现全链路监控的问题

    这篇文章主要介绍了基于Pinpoint对SpringCloud微服务项目实现全链路监控的问题,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • Java中2个Integer比较相同的四种方式举例

    Java中2个Integer比较相同的四种方式举例

    这篇文章主要介绍了Java中比较两个Integer对象的四种方式,并解释了每种方式的原理和适用范围,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-01-01
  • Spring Boot+Aop记录用户操作日志实战记录

    Spring Boot+Aop记录用户操作日志实战记录

    在Spring框架中使用AOP配合自定义注解可以方便的实现用户操作的监控,下面这篇文章主要给大家介绍了关于Spring Boot+Aop记录用户操作日志实战的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • Spring Security 安全框架应用原理解析

    Spring Security 安全框架应用原理解析

    这篇文章主要介绍了Spring Security 安全框架应用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-07-07
  • Spring Boot在Web应用中基于JdbcRealm安全验证过程

    Spring Boot在Web应用中基于JdbcRealm安全验证过程

    这篇文章主要为大家介绍了Spring Boot在Web应用中基于JdbcRealm安全验证过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪<BR>
    2023-02-02
  • Java中的隐式参数和显示参数实例详解

    Java中的隐式参数和显示参数实例详解

    这篇文章主要介绍了Java中的隐式参数和显示参数是什么,另外还有两个小例子帮助大家理解,需要的朋友可以参考下。
    2017-08-08
  • Springboot集成Protobuf的流程步骤

    Springboot集成Protobuf的流程步骤

    在以往的项目中进行网络通信和数据交换的应用场景中,最经常使用的技术便是json或xml,但是今天在介绍一个Google的力作protobuf作为数据交换格式,文中给大家介绍了Springboot集成Protobuf的流程步骤,需要的朋友可以参考下
    2024-03-03
  • Java实现Excel与HTML互转

    Java实现Excel与HTML互转

    Excel是一种电子表格格式,而HTM则是一种用于创建网页的标记语言,虽然两者在用途上存在差异,但有时我们需要将数据从一种格式转换为另一种格式,下面我们就来看看具体实现方法吧
    2025-01-01
  • maven将项目打包上传到nexus私服的详细教程

    maven将项目打包上传到nexus私服的详细教程

    这篇文章主要介绍了maven将项目打包上传到nexus私服,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2020-07-07
  • 单点登录的概念及SpringBoot实现单点登录的操作方法

    单点登录的概念及SpringBoot实现单点登录的操作方法

    在本文中,我们将使用Spring Boot构建一个基本的单点登录系统,我们将介绍如何使用Spring Security和JSON Web Tokens(JWTs)来实现单点登录功能,本文假设您已经熟悉Spring Boot和Spring Security,感兴趣的朋友一起看看吧
    2024-10-10

最新评论