JSON 架构验证器 'id' 字段

JSON Schema validator 'id' field

我正在使用 JSON Schema 来验证文件。这有点类似于 XML XSD.

我有几个关于 id 字段的问题。

我对这个问题有点迷茫。我知道最好的做法是将 id 属性 作为每个模式的唯一标识符,这在创建具有引用的不同模式的复杂模式时最有用彼此。

但我不确定我们是否需要将 URL 分配给 id 字段。而且我也迷失了将此 URL 用于架构的含义。

非常感谢您的帮助

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

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

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

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

根据 spec 根架构应该有 $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/