【问题标题】:Restrict JSON attributes for @RequestBody限制 @RequestBody 的 JSON 属性
【发布时间】:2018-01-17 00:43:35
【问题描述】:

这可能是一项简单的任务,但我找不到方法。基本上,我需要在控制器中使用 @RequestBody 注释时禁止某些参数。

这是我的模型:

@Data
public class MyModel {
  private int id;
  private String name;
}

我想要做的是在响应时,我希望将这两个属性序列化为 JSON,但是在创建或更新时,我不想接收 id 作为 @RequestBody 的一部分反序列化。

现在,如果我在 JSON 正文中传递 id,Spring 会初始化一个 MyModel 对象,并将其 id 设置为传递的值。

原因?在创建模型之前无法生成 ID,因此应用程序不应允许设置 ID。更新时,需要在 URL 本身中传递 ID,例如(PUT /mymodels/43)。这有助于适当地遵循 REST 原则。

那么,有没有办法实现这个功能呢?


更新 1:

现在,我坚持使用请求包装器。我创建了一个新类MyModelRequestWrapper,只有name 作为其属性,并将其与@RequestBody 注释一起使用。

【问题讨论】:

    标签: java json spring-mvc jackson


    【解决方案1】:

    您如何执行此操作取决于您使用的 Jackson 版本。基本上可以通过在相关字段/getters/setters 上的注释 @JsonIgnore 和 @JsonProperty 的组合来实现。

    在这里查看答案:Only using @JsonIgnore during serialization, but not deserialization

    【讨论】:

      猜你喜欢
      • 2019-03-30
      • 2014-04-25
      • 1970-01-01
      • 2019-08-21
      • 2016-06-26
      • 2020-09-28
      • 1970-01-01
      • 2021-08-21
      • 2012-12-25
      相关资源
      最近更新 更多