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

问题描述 投票:0回答:1

我已经使用依赖项 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>
spring-boot swagger swagger-ui openapi springdoc
1个回答
0
投票

我最近升级到

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")));
}

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

© www.soinside.com 2019 - 2024. All rights reserved.