2

我正在从 springfox 2.9.0 迁移到 springdoc-openapi-ui 1.2.33。我需要根据条件在 swagger ui 上显示或隐藏 PathVariable。我有两条路径,如下所示

  1. 字符串名称标识符 = "{fisrtName}/{lastName}"

  2. 字符串名称标识符 = "{fisrtName}"

我根据要求传递了上述名称标识符之一。

我对上述路径使用单个控制器,如下所示

@GetMapping(path = "persons/${nameIdentifier}/display")
public List<Person> getPersons(@PathVariable String fisrtName,
    @IgnoreLastName @PathVariable Optional<String> lastName) {

}

docket.ignoredParameterTypes(IgnoreLastName.class)在 springfox 中,我可以使用如下所示的方法来实现它。

@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中完成的

谢谢

4

1 回答 1

3

您可以使用@Hiddenswagger 注释或@Parameter(hidden = true).

如果参数级别不能传递,可以全局设置:需要升级到springdoc-openapi-ui的v1.3.0。

static {
    SpringDocUtils.getConfig().addAnnotationsToIgnore(IgnoreLastName.class);
}
于 2020-03-15T02:50:14.460 回答