0

我在我们的项目中定义了一个 REST 元素,其中包含带有原始 int 和 long 的属性。我正在使用 Jersey 2.17 在测试期间,当我尝试传递“”字符串时,REST 客户端没有报告任何验证错误,但是在其余资源中,我将原语的值作为默认值 0。这种行为非常在这种情况下,不应接受奇数作为空字符串。如何使请求因验证错误而失败。

My JSON request:
JSONObject employee = new JSONObject("{name : James}");     
rateLimiter.put("age", "");

Response :
POST -><http://134.141.206.113:8080/Employee     >
data: {"name":"James","age":""}
Status :201 output: {  
  "name" : "James",
  "age" : 0
}
4

1 回答 1

0

检查有效负载字段是否为空或 null 的一种方法是使用 Jackson 的注释在反序列化时跳过这些字段。这样,如果反序列化对象中不存在强制字段,那么您可以假设在发出请求时该字段为空。

杰克逊的注释

  1. @JsonInclude(Include.NON_NULL)
  2. @JsonInclude(Include.NON_DEFAULT)

将它们添加到在 DTO/entity 类中声明字段的顶部

@JsonInclude(Include.NON_DEFAULT)
private int age = 0;

@JsonInclude(Include.NON_NULL)
private String name;
于 2016-01-26T14:45:20.710 回答