2016-08-12 35 views
1

我有Post方法。默认情况下,Swagger-UiJSON中生成示例查询,所有fieldsClass如何在Swagger-UI“Value”字段中仅显示所需参数

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

Swagger-UiModel我清楚地看到:

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

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

我该如何做到这一点Spring MVCSpring Boot app

我扬鞭配置:

@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生成JSON,当我单击Model Schema时,仅基于无可选字段。

回答

0

Jackson's@JsonIgnoreProperties例如Jackson's标记模型。

@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

+0

不幸的是,在单击'Model Schema'后,我仍然在'Swagger UI参数'值中看到'可选'字段。所以这不能解决问题。 – yami

+0

这是关于如何配置'Swagger Ui'的更多信息。不是如何发送只有非空字段的'POST'。 – yami

+0

我已经更新了答案。我以前使用过Swagger,并且在使用此注释的UI中显示模型中的某些字段。我记得'@ ApiModelProperty'有一个隐藏的属性可以帮助你。 –

1

这不是Swagger UI的一个功能,因此无法将其配置为像您问的那样行为。因此,请考虑修改源代码以便在swagger-ui项目中执行您要求的操作。

+0

是否有替代方案,即生成我的帖子在Swagger Ui每个http://www.baeldung.com/jackson-json-view-annotation与其模型或其他可以满足我吗? – yami

相关问题