spring-mvc swagger如何在swagger ui中隐藏模型属性?

问题描述 投票:2回答:2

我们正在使用SwaggerSpringMvcPlugin生成如下所示的swagger文档。

@Bean
    public SwaggerSpringMvcPlugin swaggerSpringMvcPlugin(SpringSwaggerConfig springSwaggerConfig) {
        log.debug("Starting Swagger");
        StopWatch watch = new StopWatch();
        watch.start();
        SwaggerSpringMvcPlugin swaggerSpringMvcPlugin = new SwaggerSpringMvcPlugin(springSwaggerConfig)
            .apiInfo(apiInfo())
            .genericModelSubstitutes(ResponseEntity.class)
            .includePatterns(DEFAULT_INCLUDE_PATTERN);

        swaggerSpringMvcPlugin.build();
        watch.stop();
        log.debug("Started Swagger in {} ms", watch.getTotalTimeMillis());
        return swaggerSpringMvcPlugin;
    }

我需要排除一些模型属性,如下所示。我尝试使用@ApiModelProperty(access =“ hidden”,hidden = true),但不排除它们。请注意,将显示MyModel的所有属性,包括状态字段。任何帮助表示赞赏。

public class MyModel implements Serializable {
....

    @ApiModelProperty(access="hidden", hidden=true)
    @Column(name = "status")
    private String status;
...
}
spring-mvc hide swagger
2个回答
0
投票

假设您不想显示此属性或允许通过序列化对其进行编辑,我想说的只是添加

@JsonIgnore 

bean属性上的Jackson2注释将告诉模型生成将生成的属性排除在外。

此外,请记住,根据ObjectMapper序列化/反序列化的配置方式,注释需要放置在getter或字段上的bean上。

如果您仅想从招摇的用户界面中隐藏该字段,并允许对该字段进行修改/序列化,则当前无法实现。但是,我们计划在next version of the library中做到这一点


0
投票

您可以简单地使用

公共类MyModel实现Serializable {....

@ApiModelProperty(hidden=true)
private String status;

...}

© www.soinside.com 2019 - 2024. All rights reserved.