Как я могу игнорировать PathVariable условно в пользовательском интерфейсе swagger с помощью springdoc openapi
Я перехожу с springfox 2.9.0 на springdoc-openapi-ui 1.2.33. У меня есть требование показать или скрыть PathVariable в пользовательском интерфейсе swagger в зависимости от условия. У меня есть два пути, как показано ниже
Строка nameIdentifier = "{fisrtName}/{lastName}"
Строка nameIdentifier = "{fisrtName}"
Я передаю одно из указанных выше nameIdentifier в зависимости от требования.
Я использую один контроллер для указанных выше путей, как показано ниже.
@GetMapping(path = "persons/${nameIdentifier}/display")
public List<Person> getPersons(@PathVariable String fisrtName,
@IgnoreLastName @PathVariable Optional<String> lastName) {
}
В springfox я смог добиться этого, используя docket.ignoredParameterTypes(IgnoreLastName.class)
как показано ниже.
@Bean
public Docket api() {
Docket docket;
docket = new Docket(DocumentationType.SWAGGER_2).select()
.apis(RequestHandlerSelectors.basePackage("go.controller")).paths(PathSelectors.any()).build()
.apiInfo(apiInfo());
if (!nameIdentifier.contains("lastName")) {
docket.ignoredParameterTypes(IgnoreLastName.class);
}
return docket;
}
Но в springdoc open api я не могу добиться того же. Ваша помощь ценится в том же. Кодирование выполняется на java
Благодарность
1 ответ
Вы можете использовать @Hidden
чванливые аннотации или @Parameter(hidden = true)
.
Если вы не можете перейти на уровень параметров, вы можете установить его глобально: вам нужно будет обновить springdoc-openapi-ui до v1.3.0.
static {
SpringDocUtils.getConfig().addAnnotationsToIgnore(IgnoreLastName.class);
}