我有以下内容:
@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调用列出的模型架构与预期的内容不符。
答案 0 :(得分:1)
从技术上讲,你不能用一个模型做到这一点。使用Swagger,您需要有两个单独的模型来描述不同的输入和输出模型(即使您使用单个类,每个都需要有自己的名称)。使用模型组合可以更容易,但仍需要两个单独的模型。
Swagger-core将不将该定义转换为两个单独的模型,并将假设隐藏它的最坏情况。如果你想改变这种行为,我建议你在项目上打开一张票。