在我的getter上使用@JsonIgnore使得我的变量不会出现在POST模型模式中

时间:2015-02-05 23:15:32

标签: swagger

我有以下内容:

@JsonIgnore
public String getPassword() {
    return password;
}

@JsonProperty
public void setPassword(String password) {
    this.password = password;
}

我喜欢的是swagger UI在我的POST功能上显示密码字段,因为我只是将其隐藏在GET调用中。

现在,当我点击" Model Schema"在我的招摇UI中,我看到以下内容:

{

"电子邮件":"",

"昵称":"",

" dateOfBirth":" java.util.Date"

}

请注意,密码字段缺失。它显示了预期返回对象的JSON响应。

将@JsonIgnore放在我的setter上,将@JsonProperty放在我的getter上按预期工作。然而,将@JsonIgnore放在我的getter上,将@JsonProperty放在我的setter上我希望该变量显示在POST的模型模式中。由于当前未显示密码字段,因此查看我的API的人将不知道是否需要密码。

有没有办法解决这个问题?现在,我的api中为post调用列出的模型架构与预期的内容不符。

1 个答案:

答案 0 :(得分:1)

从技术上讲,你不能用一个模型做到这一点。使用Swagger,您需要有两个单独的模型来描述不同的输入和输出模型(即使您使用单个类,每个都需要有自己的名称)。使用模型组合可以更容易,但仍需要两个单独的模型。

Swagger-core将将该定义转换为两个单独的模型,并将假设隐藏它的最坏情况。如果你想改变这种行为,我建议你在项目上打开一张票。