我如何使用 springdoc openapi 在 swagger ui 上有条件地忽略 PathVariable
How I can ignore PathVariable conditionally on swagger ui using springdoc openapi
我正在从 springfox 2.9.0 迁移到 springdoc-openapi-ui 1.2.33。
我有一个要求 ui 根据条件在 swagger ui 上显示或隐藏 PathVariable。
我有如下两条路径
String nameIdentifier = "{fisrtName}/{lastName}"
String nameIdentifier = "{fisrtName}"
我正在根据要求uirement 传递上述 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
中完成
谢谢
您可以使用 @Hidden
swagger 注释或 @Parameter(hidden = true)
。
如果不能传参级别,可以全局设置:需要升级到springdoc-openapi-v1.3.0ui.
static {
SpringDocUtils.getConfig().addAnnotationsToIgnore(IgnoreLastName.class);
}
我正在从 springfox 2.9.0 迁移到 springdoc-openapi-ui 1.2.33。 我有一个要求 ui 根据条件在 swagger ui 上显示或隐藏 PathVariable。 我有如下两条路径
String nameIdentifier = "{fisrtName}/{lastName}"
String nameIdentifier = "{fisrtName}"
我正在根据要求uirement 传递上述 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
中完成谢谢
您可以使用 @Hidden
swagger 注释或 @Parameter(hidden = true)
。
如果不能传参级别,可以全局设置:需要升级到springdoc-openapi-v1.3.0ui.
static {
SpringDocUtils.getConfig().addAnnotationsToIgnore(IgnoreLastName.class);
}