【问题标题】:spring-mvc swagger how to hide model property in swagger ui?spring-mvc swagger 如何在 swagger ui 中隐藏模型属性?
【发布时间】:2015-03-23 09:03:19
【问题描述】:

我们正在使用 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;
...
}

【问题讨论】:

  • 去掉@ApiModelProperty 的注解怎么样?
  • 删除注释@ApiModelProperty 不起作用

标签: spring-mvc hide swagger


【解决方案1】:

你可以简单地使用

public class MyModel implements Serializable {
    @ApiModelProperty(hidden=true)
    private String status;
}

【讨论】:

    【解决方案2】:

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

    @JsonIgnore 
    

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

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

    如果您只是想从 swagger ui 中隐藏该字段并允许对该字段进行修改/序列化,那么它目前是不可能的。然而,在next version of the library,我们计划让这成为可能

    【讨论】:

    • 感谢您的回复。我们不想从 Swagger UI 管理该字段,因为它是由应用程序内部管理的,但我们需要 Json 响应中的该字段显示给 UI。
    猜你喜欢
    • 2019-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-15
    • 1970-01-01
    • 2019-02-08
    相关资源
    最近更新 更多