Я пытаюсь реорганизовать некоторый код и определить широко используемый HeaderParameter (на данный момент давайте назовем его «myCommonParam») для конкретного пути @Api (один раз для контроллера). В противном случае мне пришлось бы определять HeaderParameter для каждой операции / http-запроса в моем контроллере.
После некоторого поиска я нашел способ указать globalOperationParameters
через конфигурацию Springfox (пример 1).
пример 1:
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
...
.globalOperationParameters(Collections.singletonList(
new ParameterBuilder()
.name("myCommonParam")
.description("my common param.")
.modelRef(new ModelRef("string"))
.parameterType("header")
.required(false)
.build())
);
}
}
Реальная проблема с этим подходом состоит в том, что у меня есть несколько контроллеров (пути API), и я хочу, чтобы HeaderParameter применялся только для некоторых из них. Лучшее решение было бы, если бы я мог определить часто используемые параметры один раз для класса, как показывает ожидание.
фактический:
@Api(value = "firstController")
public class MyFirstController {
public void apiOperation_1(@RequestHeader(name = "myCommonParam", required = false) @ApiParam(value = "my common param.", required = false) String myCommonParam){
// not neccessary
}
public void apiOperation_2(@RequestHeader(name = "myCommonParam", required = false) @ApiParam(value = "my common param.", required = false) String myCommonParam){
// not neccessary
}
}
Ожидаемый результат:
@Api(value = "firstController")
>>> somehow define the 'myCommonParam' parameter here? <<<
public class MyFirstController {
public void apiOperation_1(){
// not neccessary
}
public void apiOperation_2(){
// not neccessary
}
}