我已经使用依赖项 springdoc-openapi-ui 1.6.8 version 将现有项目 Swagger 迁移到 Swagger3 。 在 Swagger 配置文件中添加全局标头参数时出现问题,但未在 Swagger 仪表板上显示 如果上述代码有任何问题,请告诉我。
代码:
**
@Bean
public OpenAPI customOpenAPI() {
return new OpenAPI()
.components(new Components()
.addSecuritySchemes("basicScheme",
new SecurityScheme().type(SecurityScheme.Type.HTTP).scheme("basic"))
.addParameters("myHeader1",
new Parameter().in("header").schema(new StringSchema()).name("myHeader1"))
.addHeaders("myHeader2",
new Header().description("myHeader2 header").schema(new StringSchema())))
.info(new Info().title("eWallet API Sandbox").description("eWallet API Sandbox").version("v1.0")
.contact(new Contact().name("WOW Finstack").url("https://wowdigital.ai/")
.email("[email protected]"))
.termsOfService("WOW Finstack").license(new License().name("License").url("#")));
//
};
**
依赖性:
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.6.8</version>
</dependency>
我最近升级到
springdoc-openapi-ui
,并努力让全局标头在 Spring boot 上工作 2.6.3
。
如果将全局标头定义为
Parameter
(使用new Parameter()...
),我设法使其工作,但当定义为Header
(使用new Header()...
)时,我没有使其工作
我猜你已经定义了一个
GroupedOpenApi
Spring Bean。所以你要做的就是在这个 OpenApiCustomizer
上添加一个 GroupedOpenApi
,参见下面的 addOpenApiCustomizer(globalHeaderCustomizer())
:
@Bean
public GroupedOpenApi publicGroup() {
return GroupedOpenApi.builder()
.packagesToScan("com.my.package")
.pathsToMatch("/**")
.group("public")
.addOpenApiCustomizer(globalHeaderCustomizer()) // --> you need this!
.build();
}
其中
globalHeaderCustomizer()
是:
private OpenApiCustomizer globalHeaderCustomizer() {
return openApi -> openApi.getPaths().values().stream().flatMap(pathItem -> pathItem.readOperations().stream())
.forEach(operation -> operation.addParametersItem(
new HeaderParameter().$ref("#/components/parameters/myHeader1")));
}
我认为这应该可以解决你的问题。