我正在使用JSON Schema来验证文件。这与XML XSD类似。
我有一些关于 id 字段的问题。
我在这个问题上有点失落。我知道最佳做法是将 id 属性作为每个模式的唯一标识符,并且在创建具有相互引用的不同模式的复杂模式时,这最有用。
但我不确定是否需要为id字段分配URL。我也迷失了为该架构提供此URL的含义。
非常感谢您的帮助
答案 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