我正在使用JSON模式来验证文件。这有点类似于 XML XSD。
我有几个关于id字段的问题。
- 没有网络连接,架构仍然有效吗? id
- 中的 URL 应该可以从 Web 浏览器访问 ? 即如果 'id' = "https://example.com/question",这是否意味着我们应该能够通过转到 https://example.com/question 从浏览器访问模式?
我对这个问题有点迷茫。我知道最佳做法是将id属性作为每个模式的唯一标识符,并且在创建具有相互引用的不同架构的复杂架构时,这最有用。
但我不确定我们是否需要为 id 字段分配一个 URL。而且我也对架构使用此 URL 的含义感到迷茫。
非常感谢您的帮助
id
(自draft-06
年以来$id
(的主要目的是组织$ref
解析的范围。
$id
不必是现有的 HTTP 资源。识别的模式甚至可以在另一个模式中定义(规范测试套件中的示例(。
JSON 架构规范要求验证程序应该能够根据当前架构中定义的$id
解析引用。远程引用也应该被解析,但对它应该如何发生没有任何限制。
在许多情况下,由于高延迟,验证期间的网络交互是非常不需要的。大多数实现都提供了一种通过在验证之前显式$id
来预加载/定义架构资源的方法。
根据规范,根架构应该具有$id
绝对URI,但是是否应该使用HTTP客户端访问它取决于您和您的验证器。
$id仅定义为URI。
http://json-schema.org/draft-07/json-schema-core.html#rfc.section.8.2
请参阅 RFC-3986 统一资源标识符 (URI(:通用语法
https://www.rfc-editor.org/rfc/rfc3986
"统一资源标识符 (URI( 是标识抽象或物理资源的紧凑字符序列。">
Daniel Messier的一篇很好的文章清楚地解释了URI的性质 - 它可以只是一个URN,但也可能是一个有效的URL
https://danielmiessler.com/study/url-uri/