2016-08-12 460 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