我已经使用依赖springdoc openapi ui 1.6.8版本将现有的项目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("info@wowdigital.ai"))
.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引导2.6.3
上努力使全局标头工作。
如果它被定义为Parameter
(使用new Parameter()...
(,我设法使全局标头工作,但当它被定义成Header
(使用new Header()...
(时,我没有使它工作
我猜您已经定义了一个GroupedOpenApi
Spring Bean。所以你要做的是在这个GroupedOpenApi
中添加一个OpenApiCustomiser
,参见下面的addOpenApiCustomiser(globalHeaderCustomizer())
:
@Bean
public GroupedOpenApi publicGroup() {
return GroupedOpenApi.builder()
.packagesToScan("com.my.package")
.pathsToMatch("/**")
.group("public")
.addOpenApiCustomiser(globalHeaderCustomizer()) // --> you need this!
.build();
}
其中globalHeaderCustomizer()
为:
private OpenApiCustomiser globalHeaderCustomizer() {
return openApi -> openApi.getPaths().values().stream().flatMap(pathItem -> pathItem.readOperations().stream())
.forEach(operation -> operation.addParametersItem(
new HeaderParameter().$ref("#/components/parameters/myHeader1")));
}
我认为这应该能解决你的问题。