无法使用Swagger 3 UI添加全局标头参数



我已经使用依赖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()...(时,我没有使它工作

我猜您已经定义了一个GroupedOpenApiSpring 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")));
}

我认为这应该能解决你的问题。

最新更新