【SpringBoot项目中Knife4j在线API文档】
创始人
2024-03-09 04:26:13
0

目录

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

2. 配置API文档信息


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

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

使用Knife4j的基础步骤:

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

关于依赖项:


com.github.xiaoyminknife4j-spring-boot-starter2.0.9

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

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

knife4j.enable=true

关于配置类:

import com.github.xiaoymin.knife4j.spring.extension.OpenApiExtensionResolver;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
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.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;/*** Knife4j配置类** @author java@tedu.cn* @version 0.0.1*/
@Slf4j
@Configuration
@EnableSwagger2WebMvc
public class Knife4jConfiguration {/*** 【重要】指定Controller包路径*/private String basePackage = "cn.tedu.csmall.product.controller";/*** 分组名称*/private String groupName = "product";/*** 主机名*/private String host = "http://java.tedu.cn";/*** 标题*/private String title = "商城在线API文档--商品管理";/*** 简介*/private String description = "商城在线API文档--商品管理";/*** 服务条款URL*/private String termsOfServiceUrl = "http://www.apache.org/licenses/LICENSE-2.0";/*** 联系人*/private String contactName = "Java教学研发部";/*** 联系网址*/private String contactUrl = "http://java.tedu.cn";/*** 联系邮箱*/private String contactEmail = "java@tedu.cn";/*** 版本号*/private String version = "1.0.0";@Autowiredprivate OpenApiExtensionResolver openApiExtensionResolver;public Knife4jConfiguration() {log.debug("创建配置类对象:Knife4jConfiguration");}@Beanpublic Docket docket() {String groupName = "1.0.0";Docket docket = new Docket(DocumentationType.SWAGGER_2).host(host).apiInfo(apiInfo()).groupName(groupName).select().apis(RequestHandlerSelectors.basePackage(basePackage)).paths(PathSelectors.any()).build().extensions(openApiExtensionResolver.buildExtensions(groupName));return docket;}private ApiInfo apiInfo() {return new ApiInfoBuilder().title(title).description(description).termsOfServiceUrl(termsOfServiceUrl).contact(new Contact(contactName, contactUrl, contactEmail)).version(version).build();}
}

注意:务必检查以上配置类中的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注解的配置作为当前注解的参数

@ApiOperation("删除类别")
@ApiOperationSupport(order = 200)
@ApiImplicitParams({@ApiImplicitParam(name = "id", value = "类别ID", required = true, dataType = "long"),@ApiImplicitParam(name = "userId", value = "用户ID", required = true, dataType = "long")
})
@PostMapping("/delete")
public void delete(Long userId, Long id) {}

个人主页:居然天上楼

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

人生海海,山山而川

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

是对我最大的支持与鞭策

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...