Spring REST API 中的 Json 模式验证

Posted

技术标签:

【中文标题】Spring REST API 中的 Json 模式验证【英文标题】:Json schema validation in Spring REST APIs 【发布时间】:2016-04-23 20:37:04 【问题描述】:

我正在使用 Spring Boot 和 [jackson-module-jsonSchema] (https://github.com/FasterXML/jackson-module-jsonSchema) 构建一个 REST API,用于生成 JSON 模式。 我正在寻找根据为公开资源定义的已定义 JSON 模式验证到达我的 API 端点(Spring 控制器)的请求 JSON 有效负载的最佳方法,验证包括检查所需字段、格式、最小值和最大值等。一切我们可以根据架构进行验证。

似乎杰克逊 json 模式模块对模式生成很有用,但对验证没有用,对吗? 关于如何实现我想要做的任何建议?

【问题讨论】:

AFAIK 唯一可以进行 json 模式验证的是项目:github.com/fge/json-schema-validator,它现在正在寻找新的维护者。看看吧。 另见bolerio.github.io/mjson 【参考方案1】:

您还可以查看 Rest Assured Json Schema 验证器

https://www.baeldung.com/rest-assured-json-schema

【讨论】:

请对链接答案的内容做一些解释。 @IsraeldelaCruz 这里的想法是在你的类路径中定义 json 模式,然后使用 json 验证器验证对该模式的响应。像这样 assertThat().body(matchesJsonSchemaInClasspath("event_0.json")) 您可以浏览链接上的示例,如果您还有任何问题,请告诉我。【参考方案2】:

如果你看一下JSON schema site,Java 中只有两个库用于验证。

    Jorge Campos 建议的 ont 已经成熟,正在寻找新的维护者:https://github.com/fge/json-schema-validator 第二个比较新:http://github.com/everit-org/json-schema

我最近处于必须选择一个或另一个的情况,我选择了第一个选项。 Rest Assured 库也正在使用它。

【讨论】:

感谢您的回答@luboskrnac 我尝试了github.com/fge/json-schema-validator 并且看起来不错,在测试时我意识到杰克逊正在生成JSON模式v3并且验证器正在执行v4-draft,我正在考虑更改杰克逊的其他图书馆,你有什么建议吗? mJson 也完全支持模式验证,使用起来比上面的简单得多:bolerio.github.io/mjson 请注意,现在只推荐一个库:json-schema.org/implementations.html#validators

以上是关于Spring REST API 中的 Json 模式验证的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring Boot REST API 中格式化返回的 json?

Spring Boot Rest API 返回与 Lombok 一起使用的空 JSON

使用 PHP cURL 通过 REST API 获取 JSON

如果输出json具有带点(。)字符的键,如何在spring中为rest api创建域类

如何在 Spring Boot REST API 中启用对 JSON / Jackson @RequestBody 的严格验证?

如何使用 MySQL 在 Spring Boot REST API 中放置和获取任何格式的 JSON 对象?