我在项目中定义了一个REST元素,其中包含带有原始int&的属性。长 。我正在使用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
}
答案 0 :(得分:0)
检查有效负载字段的空白或空的一种方法是使用Jackson的注释在反序列化时跳过这些字段。这样,如果反序列化对象中不存在必需字段,那么您可以假设在请求发生时该字段为空。
杰克逊的注释
将它们添加到DTO /实体类
中声明字段的顶部@JsonInclude(Include.NON_DEFAULT)
private int age = 0;
@JsonInclude(Include.NON_NULL)
private String name;