我正在编写一个带有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
的某些字段必须位于某个范围内(数字字段)如果可能,我想尽可能少地更改我的代码。也就是说,我更喜欢注释我的类,方法和参数来集成验证。
答案 0 :(得分:4)
您可以使用JSON Schema。
由于你使用杰克逊,你可以使用my library来做到这一点。
但是,这意味着您需要更改逻辑,以便接收JSON(作为JsonNode
)而不是序列化的POJO,然后才能序列化到您的POJO。
答案 1 :(得分:2)
您还可以BeanValidationApi(javax.validation.constraints),然后使用@NotNull,@Pattern
等注释您的字段。泽西岛还提供Bean Validation Support