gpt4 book ai didi

java - 向所有 swagger 请求添加 header

转载 作者:行者123 更新时间:2023-11-30 06:10:00 28 4
gpt4 key购买 nike

我目前正在向旧项目添加 swagger,并且我想向所有请求添加 header 。该应用程序有一个过滤器,用于检查您的应用程序版本是否足够高,因此要求客户端发送 version header 。

是否可以将其添加到所有请求中,或者我是否必须重写所有端点才能具有此 header 参数(有很多)。如果有一个全局 header 参数那就太好了。

应该补充一点,我想在 Java 中执行此操作,而不是直接更改 json/yaml

最佳答案

您可以在 Docket 配置中添加全局操作参数,如最后一行 - .globalOperationParameters(operationParameters()),

我展示了更广泛的配置,但您对这个问题的关注点应该只是最后一行。

@Bean
public Docket swaggerPlugin() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.paths(PathSelectors.any())
.apis(Predicates.or(
RequestHandlerSelectors
.basePackage(....),
RequestHandlerSelectors
.basePackage(....)))
.build().directModelSubstitute(LocalDate.class, String.class)
.genericModelSubstitutes(ResponseEntity.class)
.apiInfo(apiInfo())
.securitySchemes(Lists.newArrayList(apiKey()))
.securityContexts(Arrays.asList(securityContext()))
.globalOperationParameters(operationParameters());
}


private List<Parameter> operationParameters() {
List<Parameter> headers = new ArrayList<>();
headers.add(new ParameterBuilder().name("HEADER_1")
.description("HEADER_1 DESC")
.modelRef(new ModelRef("string")).parameterType("header")
.required(false).build());

headers.add(new ParameterBuilder().name("HEADER_2")
.description("HEADER_2 DESC")
.modelRef(new ModelRef("string")).parameterType("header")
.required(false).defaultValue("0").build());
return headers;
}

如图所示,也可以提供默认值。此外,这两个 header 将在 Swagger UI 上可见,因为可以为每个请求手动输入文本字段和值。

关于java - 向所有 swagger 请求添加 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50467035/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com