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

Using @JsonIgnore on my getter is making it so that my variable doesn't show up in the POST model schema either

我有以下内容:

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

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

我希望大摇大摆的 UI 在我的 POST 函数中显示密码字段,因为我只是在 GET 调用中隐藏它。

现在,当我大摇大摆地点击 "Model Schema" UI 时,我看到了以下内容:

{

"email": "",

"nickname": "",

"dateOfBirth": "java.util.Date"

}

请注意缺少密码字段。它显示了预期 return 对象的 JSON 响应。

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

有办法解决吗?现在,我的 api 中为 post 调用列出的模型架构与预期不符。

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

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