这可能是一项简单的任务,但我找不到办法。基本上,我需要在控制器中使用@RequestBody
注释时禁用一些参数。
这是我的模特:
@Data
public class MyModel {
private int id;
private String name;
}
我想要做的是在回复时,我希望将这两个属性序列化为JSON,但在创建或更新时,我宁愿不接收id
作为{的一部分{ {1}}反序列化。
现在,如果我在JSON正文中传递@RequestBody
,Spring会初始化id
对象,并将MyModel
设置为传递的值。
原因?在创建模型之前无法生成ID,因此应用程序不应允许设置ID。在更新时,ID需要在URL本身中传递,例如(id
)。这有助于适当地遵循REST原则。
那么,有没有办法实现这个功能?
更新1:
现在,我很难使用请求包装器。我创建了一个新类PUT /mymodels/43
,其中只有MyModelRequestWrapper
作为其属性,并将其与name
注释一起使用。
答案 0 :(得分:2)
如何执行此操作取决于您使用的Jackson版本。基本上可以通过在相关字段/ getter / setter上组合注释@JsonIgnore和@JsonProperty来实现。
在这里查看答案:Only using @JsonIgnore during serialization, but not deserialization