JSON 架构验证器 'id' 字段
JSON Schema validator 'id' field
我正在使用 JSON Schema 来验证文件。这有点类似于 XML XSD.
我有几个关于 id 字段的问题。
- 架构在没有网络连接的情况下是否仍然有效?
- id 中的 URL 应该可以从网络浏览器访问?即如果 'id' = "https://example.com/question", does this mean that we should be able to access the schema from a browser by going to https://example.com/question ?
我对这个问题有点迷茫。我知道最好的做法是将 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
我正在使用 JSON Schema 来验证文件。这有点类似于 XML XSD.
我有几个关于 id 字段的问题。
- 架构在没有网络连接的情况下是否仍然有效?
- id 中的 URL 应该可以从网络浏览器访问?即如果 'id' = "https://example.com/question", does this mean that we should be able to access the schema from a browser by going to https://example.com/question ?
我对这个问题有点迷茫。我知道最好的做法是将 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