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 的最佳方法是什么?我想验证某些事情:

如果可能的话,我希望尽量少改动我的代码。也就是说,我更喜欢注释我的类,方法和参数来集成验证。

您可以使用 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