我目前正在向一个旧项目添加招摇,我想为所有请求添加标题。
该应用程序有一个过滤器,用于检查您的应用版本是否足够高,因此需要客户端发送version
标题。
是否可以将其添加到所有请求中,或者是否必须重写所有端点以具有此标头参数(其中有很多)。拥有一个全局标头参数会非常好。
应该补充一点,我想用Java做这个,而不是直接更改json / yaml
答案 0 :(得分:1)
您可以在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;
}
如图所示,还可以提供默认值。此外,这两个标题将在Swagger UI上显示为文本字段&amp;可以为每个请求手动输入值。