knife4j 4全添加局参数
时间: 2025-03-21 10:11:57 浏览: 44
### 如何在 Knife4j 4.x 版本中全局配置请求参数
为了实现 Knife4j 中的全局请求参数配置,可以通过自定义 `OpenAPI` 的扩展功能来完成。具体来说,在 Spring Boot 应用程序中可以利用 `org.springdoc.core.customizers.OpenApiCustomiser` 接口或者直接修改 `springdoc-openapi-ui` 提供的核心对象来进行设置。
以下是具体的解决方案:
#### 方法一:通过 OpenApiCustomizer 添加全局参数
可以在项目的配置类中注册一个 Bean 来实现此需求。代码如下所示:
```java
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import org.springdoc.core.customizers.OpenApiCustomiser;
import io.swagger.v3.oas.models.parameters.Parameter;
import io.swagger.v3.oas.models.media.StringSchema;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class SwaggerConfig {
@Bean
public OpenApiCustomiser globalParametersOpenApiCustomiser() {
return openApi -> {
Parameter tokenParameter = new Parameter()
.in("header") // 参数位置 header/query/path/body/formData
.name("Authorization") // 参数名称
.description("登录令牌") // 描述信息
.required(false) // 是否必填
.schema(new StringSchema().defaultValue("Bearer ")); // 默认值和数据类型
if (openApi.getPaths() != null) {
openApi.getPaths().values().forEach(pathItem -> pathItem.readOperationsMap().values().forEach(operation -> {
operation.addParametersItem(tokenParameter);
}));
}
};
}
@Bean
public OpenAPI springShopOpenAPI() {
return new OpenAPI()
.info(new Info().title("Spring API 文档").version("v1"));
}
}
```
上述方法会为所有接口自动添加名为 `Authorization` 的头部参数[^2]。
---
#### 方法二:基于 Global Operation Customization 实现
如果需要更灵活的方式,则可以直接继承并重写 `OperationCustomizer` 类中的逻辑。这种方式允许开发者针对特定路径或 HTTP 方法应用不同的规则。
示例代码片段如下:
```java
@Bean
public OperationCustomizer customGlobalHeader() {
return (operation, context) -> {
Parameter parameter = new Parameter();
parameter.setName("X-Tenant-ID");
parameter.setIn(Parameter.In.HEADER.toString());
parameter.setDescription("租户ID");
parameter.setRequired(true);
operation.addParametersItem(parameter);
};
}
```
这种方法同样适用于大多数场景下的全局参数注入问题[^3]。
---
#### 注意事项
当引入新的依赖库时,请确保所使用的版本兼容当前项目环境(例如 Java Jakarta EE 平台)。对于 Spring Boot 3.x 用户而言,推荐选用支持 Jakarta EE 的 knife4j 组件版本号如 `knife4j-openapi3-jakarta-spring-boot-starter` [^1]。
此外需要注意的是,某些特殊情况下可能还需要调整 YAML 文件内的属性声明部分以适配额外的功能选项。
---
阅读全文
相关推荐


















