JSON Schema验证器'id'字段

问题描述 投票:1回答:2

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

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

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

但我不确定是否需要为id字段分配URL。而且我也失去了关于为模式提供此URL的含义。

非常感谢您的帮助

xsd schema jsonschema xsd-validation json-schema-validator
2个回答
2
投票

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

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

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

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

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


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的本质 - 它可以只是一个URN - 但也可能是一个有效的URL

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

© www.soinside.com 2019 - 2024. All rights reserved.