【问题标题】:How to show only required parametrs in Swagger-UI "Value" field如何在 Swagger-UI“值”字段中仅显示必需的参数
【发布时间】:2016-08-12 14:55:35
【问题描述】:

我有Post 方法。 Swagger-Ui 默认在JSON 中生成示例查询,所有fields 来自Class

我想在默认情况下只显示非可选字段。

Swagger-Ui Model 我清楚地看到:

x (integer, optional),
y (string), 

有些字段是可选的,有些则不是。

我怎样才能在Spring MVC Spring Boot app 中实现这一点?

我的 Swagger 配置:

@Configuration
@EnableSwagger2
public class SwaggerConfig
{
    @Bean
    public Docket api()
    {

        return new Docket(DocumentationType.SWAGGER_2).

                select().apis(RequestHandlerSelectors.any()).paths(PathSelectors.ant("/api/**")).build();

    }
}

@ApiModelProperty(hidden = true)

隐藏字段 - 但我不希望那样。 我只想让Swagger 在单击Model Schema 时仅基于非可选字段生成JSON。

【问题讨论】:

    标签: java spring rest spring-boot swagger-ui


    【解决方案1】:

    这不是 Swagger UI 的功能,因此无法将其配置为按照您的要求行事。所以考虑修改源代码来做你在 swagger-ui 项目中要求的事情

    【讨论】:

    【解决方案2】:

    Jackson's @JsonIgnoreProperties 标记您的模型,例如

    @JsonIgnoreProperties(value = {"field1", ...})
    public class YourModel {
    
        private String field1;
    
        private String field2;
    
        //getters and setters here
    }
    

    进行测试,假设field1null

    ObjectMapper objectMapper = new ObjectMapper();
    YourModel model = new YourModel();
    
    String strField1 = objectMapper.writeValueAsString(objectMapper);
    
    assertThat(strField1, not(containsString("field1")));
    

    @JsonIgnoreProperties

    【讨论】:

    • 不幸的是,在单击Model Schema 后,我仍然在Swagger UI Parameter value 中看到optional 字段。所以这并不能解决问题。
    • 这是更多关于如何以这种方式配置Swagger Ui。不知道如何发送POST 只有非空字段。
    • 我已经更新了答案。我之前使用过 Swagger,并在我使用此注释的 UI 中排除了我模型中的某些字段。我记得@ApiModelProperty 有一个隐藏属性,可能会对您有所帮助。
    • 我试过了,但首先我看到Model. Second i do not want to hide them - i only want to make Swagger`中的所有字段仅基于Not-optional字段生成JSON。 `@ApiModelProperty(hidden = true)` 隐藏该字段 - 但我不希望这样。不过我很感激尝试:)
    猜你喜欢
    • 2020-12-22
    • 1970-01-01
    • 2017-03-07
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多