java/jersey/jackson - 验证输入 JSON
java/jersey/jackson - validate input JSON
我正在编写带有 Java/Jersey/Jackson 堆栈的 REST API。所有 JSON 解析和生成都是由 Jackson 完成的。 REST 层由 Jersey 处理。它将嵌入到 Grizzly 容器中。
在我的 API 中,我在我的端点中接受 JSON。例如:
@POST
public Response post(final SomeObject input) {
return ...;
}
验证 input
的最佳方法是什么?我想验证某些事情:
input
必须不为空
input
的某些字段不能为空
input
的某些字段必须遵循正则表达式(文本字段)
input
的某些字段必须在一个范围内(数字字段)
- ...
如果可能的话,我希望尽量少改动我的代码。也就是说,我更喜欢注释我的类,方法和参数来集成验证。
您可以使用 JSON Schema.
并且因为您使用 Jackson,所以您可以使用 my library 来实现这一点。
然而,这意味着您需要更改您的逻辑,以便您接收 JSON(作为 JsonNode
)而不是序列化的 POJO,然后才序列化到您的 POJO。
你也可以BeanValidationApi (javax.validation.constraints) and then annotate your fields with @NotNull,@Pattern
, etc. Jersey also provides Bean Validation Support
我正在编写带有 Java/Jersey/Jackson 堆栈的 REST API。所有 JSON 解析和生成都是由 Jackson 完成的。 REST 层由 Jersey 处理。它将嵌入到 Grizzly 容器中。
在我的 API 中,我在我的端点中接受 JSON。例如:
@POST
public Response post(final SomeObject input) {
return ...;
}
验证 input
的最佳方法是什么?我想验证某些事情:
input
必须不为空input
的某些字段不能为空input
的某些字段必须遵循正则表达式(文本字段)input
的某些字段必须在一个范围内(数字字段)- ...
如果可能的话,我希望尽量少改动我的代码。也就是说,我更喜欢注释我的类,方法和参数来集成验证。
您可以使用 JSON Schema.
并且因为您使用 Jackson,所以您可以使用 my library 来实现这一点。
然而,这意味着您需要更改您的逻辑,以便您接收 JSON(作为 JsonNode
)而不是序列化的 POJO,然后才序列化到您的 POJO。
你也可以BeanValidationApi (javax.validation.constraints) and then annotate your fields with @NotNull,@Pattern
, etc. Jersey also provides Bean Validation Support