JSON Schema验证器'id'字段

时间:2018-05-30 14:03:22

标签: xsd schema jsonschema xsd-validation json-schema-validator

我正在使用JSON Schema来验证文件。这与XML XSD类似。

我有一些关于 id 字段的问题。

我在这个问题上有点失落。我知道最佳做法是将 id 属性作为每个模式的唯一标识符,并且在创建具有相互引用的不同模式的复杂模式时,这最有用。

但我不确定是否需要为id字段分配URL。我也迷失了为该架构提供此URL的含义。

非常感谢您的帮助

2 个答案:

答案 0 :(得分:2)

id$id以来draft-06)的主要目的是组织$ref解析的范围。

$id不一定是现有的HTTP资源。识别的模式甚至可以在另一个中定义(在规范测试套件中example)。

JSON Schema规范要求验证者应该能够根据当前模式中定义的$id来解析引用。远程引用也应该被解决,但对它应该如何发生没有限制。

在许多情况下,由于高延迟,验证期间的网络交互非常不受欢迎。大多数实现为您提供了一种在验证之前通过$id预先加载/定义架构资源的方法。

根据spec根模式应该$id这是一个绝对URI,但是否应该可以通过HTTP客户端访问它取决于您和您的验证器。

答案 1 :(得分:0)

$ id仅定义为URI。

http://json-schema.org/draft-07/json-schema-core.html#rfc.section.8.2

请参阅RFC-3986统一资源标识符(URI):通用语法

https://tools.ietf.org/html/rfc3986

“统一资源标识符(URI)是标识抽象资源或物理资源的紧凑字符序列。”

Daniel Messier的一篇不错的文章清楚地说明了URI的性质-URI可以只是一个URN-但也可以是一个有效的URL

https://danielmiessler.com/study/url-uri/