当前位置: 首页 > news >正文

Spring Boot 2.5.4项目里,如何给Swagger 3.0和Knife4j一键加上全局Header参数(附完整代码)

Spring Boot 2.5.4项目中Swagger 3.0与Knife4j全局Header参数配置实战

在前后端分离的开发模式中,API文档的清晰性和调试便捷性直接影响着开发效率。对于需要身份验证的接口,如何在文档中统一展示Header参数(如Token)是一个常见需求。本文将详细介绍在Spring Boot 2.5.4项目中,如何为Swagger 3.0和Knife4j一键配置全局Header参数,避免在每个Controller方法上重复添加注解的繁琐操作。

1. 环境准备与依赖配置

1.1 基础环境要求

确保你的开发环境满足以下条件:

  • JDK 1.8+
  • Spring Boot 2.5.4
  • Maven 3.6+ 或 Gradle 6.8+
  • 已集成Swagger 3.0

1.2 添加Knife4j依赖

在项目的pom.xml文件中添加Knife4j的Starter依赖:

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

同时,确保Swagger 3.0的基本依赖已经存在:

<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency>

1.3 基础YAML配置

application.yml中添加Knife4j的基本配置:

knife4j: enable: true # 开启Knife4j增强功能 production: false # 关闭生产环境屏蔽 springfox: documentation: enabled: true # 启用Swagger文档

2. Swagger全局配置实现

2.1 创建Swagger配置类

在项目中创建一个新的配置类,通常命名为SwaggerConfigSwagger3Config

@Configuration @EnableSwagger2 public class Swagger3Config { // 配置内容将在后续步骤中添加 }

2.2 配置全局Header参数

在配置类中添加globalRequestParameters方法,用于定义全局Header参数:

private List<RequestParameter> getGlobalRequestParameters() { List<RequestParameter> parameters = new ArrayList<>(); parameters.add(new RequestParameterBuilder() .name("Authorization") .description("认证Token") .in(ParameterType.HEADER) .query(q -> q.model(m -> m.scalarModel(ScalarType.STRING))) .required(false) .build()); return parameters; }

2.3 完整配置类示例

以下是完整的Swagger配置类代码:

@Configuration @EnableSwagger2 public class Swagger3Config { @Bean public Docket createRestApi() { return new Docket(DocumentationType.OAS_30) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.your.package")) .paths(PathSelectors.any()) .build() .globalRequestParameters(getGlobalRequestParameters()); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("API接口文档") .description("项目API文档") .version("1.0.0") .build(); } private List<RequestParameter> getGlobalRequestParameters() { List<RequestParameter> parameters = new ArrayList<>(); parameters.add(new RequestParameterBuilder() .name("Authorization") .description("认证Token") .in(ParameterType.HEADER) .query(q -> q.model(m -> m.scalarModel(ScalarType.STRING))) .required(false) .build()); return parameters; } }

3. 高级配置与优化

3.1 多环境配置策略

在实际项目中,我们通常需要根据不同的环境(开发、测试、生产)来启用或禁用Swagger文档。可以通过条件注解实现:

@Configuration @ConditionalOnProperty(name = "swagger.enabled", havingValue = "true") @EnableSwagger2 public class Swagger3Config { // 配置内容 }

然后在各环境的配置文件中设置swagger.enabled的值:

# 开发环境 swagger: enabled: true # 生产环境 swagger: enabled: false

3.2 多Header参数配置

如果需要配置多个全局Header参数,可以扩展getGlobalRequestParameters方法:

private List<RequestParameter> getGlobalRequestParameters() { List<RequestParameter> parameters = new ArrayList<>(); // Token参数 parameters.add(new RequestParameterBuilder() .name("Authorization") .description("认证Token") .in(ParameterType.HEADER) .required(true) .build()); // 语言参数 parameters.add(new RequestParameterBuilder() .name("Accept-Language") .description("语言设置") .in(ParameterType.HEADER) .required(false) .build()); return parameters; }

3.3 响应消息全局配置

除了请求参数,我们还可以配置全局的响应消息:

@Bean public Docket createRestApi() { return new Docket(DocumentationType.OAS_30) // 其他配置 .globalResponses(HttpMethod.GET, getGlobalResponseMessage()) .globalResponses(HttpMethod.POST, getGlobalResponseMessage()); } private List<Response> getGlobalResponseMessage() { List<Response> responseList = new ArrayList<>(); responseList.add(new ResponseBuilder().code("401").description("未授权").build()); responseList.add(new ResponseBuilder().code("403").description("禁止访问").build()); responseList.add(new ResponseBuilder().code("404").description("资源不存在").build()); return responseList; }

4. 验证与调试

4.1 访问Swagger UI

启动项目后,可以通过以下URL访问Swagger原生UI:

http://localhost:8080/swagger-ui/

4.2 访问Knife4j增强UI

Knife4j提供了更强大的UI界面,访问地址为:

http://localhost:8080/doc.html

4.3 验证全局Header参数

在Knife4j的界面中,任意选择一个接口进行测试,应该能在请求参数中看到配置的全局Header参数:

参数名称参数位置是否必填描述
Authorizationheader认证Token

4.4 常见问题排查

如果全局Header参数没有显示,可以检查以下几点:

  1. 确保globalRequestParameters方法被正确调用并添加到Docket配置中
  2. 检查Knife4j的enable配置是否为true
  3. 确认Controller类所在的包路径与RequestHandlerSelectors.basePackage中配置的一致
  4. 检查是否有其他Swagger配置覆盖了当前配置
http://www.rkmt.cn/news/1443658.html

相关文章:

  • 通过cr3读写进程内存
  • IDEA 2023.3 创建 Spring Boot 项目,如何让 Java 8 和 Spring Boot 3.x 共存?保姆级配置指南
  • 天价域名AI.com背后:数字入口的战略价值与AGI生态未来
  • Arduino蓝牙控制LED:从硬件连接到APP开发的物联网入门实践
  • Lab 3-1
  • 三维立体重构智慧矿产透明化安防监测预警及AI预案
  • DIY免焊接Ryobi 18V转12V电源:闲置工具电池的再生利用方案
  • 基于姿态传感器与Nintendo LABO的互动木偶发声系统实现
  • 跨可用区高可用云原生集群节点规划中关于 K8s Pod健康检查探针设计部署的架构思考
  • AI如何守护加密货币高额交易安全:从异常检测到实时防御
  • AI意识之谜:从整合信息理论到硅基困境与未来路径
  • 告别卡顿!用Faster-Whisper在CPU上5分钟搞定中文语音转文字(附Tiny模型下载与转换)
  • Cadence Allegro焊盘制作避坑指南:为什么你的不规则焊盘在出Gerber时“消失”了?
  • 2026闭眼入!5款AI写作辅助平台亲测,治愈文献焦虑,初稿撰写快人一步
  • 神经渲染的鲁棒性:从技术内核到产业落地的全面解析
  • 2026年一键生成论文工具测评:5款神器从选题到排版全流程通关秘籍
  • 保姆级教程:用STM32CubeMX给STM32F407VET6接上TF卡,从配置、读写测试到Debug全流程
  • 3步解决Mac百度网盘限速:开源加速插件完整使用指南
  • 告别马赛克脸:用GFPGAN一键修复模糊老照片,实测效果与避坑指南
  • 沈阳保温钉哪家好优选辽宁源创节能保温建材 - 博客湾
  • B站视频下载完全指南:免费解锁大会员4K高清内容
  • 六自由度并联波浪补偿系统设计与控制关键技术解析【附仿真】
  • 2026年 预锂化硅氧材料厂家推荐榜单:高硅氧纤维/硅氧聚合物/硅氧前驱体,技术实力与创新应用深度盘点 - 企业推荐官【官方】
  • Sora 2点云生成失效的5类致命陷阱(含调试日志特征码):一位资深SLAM工程师的血泪排错清单
  • 自制6万伏高压倍压器:从科克罗夫特-沃尔顿原理到安全实践
  • AutoSubs:终极本地AI字幕生成方案,视频编辑效率提升300%
  • 2026杭州GEO优化TOP5权威榜:选型指南+避坑攻略+深度测评 - 玖叁鹿
  • 纯模拟电路实现循线小车:从光电传感器到差分控制
  • 告别Foremost:用Wireshark内置功能与Python脚本一键提取CTF流量中的隐藏文件
  • ExplorerPatcher架构解析:Windows Shell定制化技术实现方案