JSON 模式语义版本控制
JSON Schema Semantic Versioning
我有一项管理某些系统配置的服务,这些配置作为 .json 文件存储在文件系统中。每次启动时,该服务都会启动,读取配置并使用这些值来修改所述系统配置。
在使用这些值之前,我正在使用 JSON 模式验证器来确认数据是否正确。
现在我的问题是,如何实现 JSON 模式的语义版本控制并检查 json 数据是否使用了正确的版本。
目前,如果架构发生变化且数据未更改,验证程序将退出并显示错误代码,这很好。但不太好的是我收到的错误消息。
我喜欢做的是,在验证之前检查数据的版本是否与架构的版本匹配,如果不匹配,则抛出一个期望,告诉用户数据与架构不兼容因为版本不匹配。
经过一些研究后,我在 JSON 模式中发现了以下键:
"$id": "https://my-company.org/schemas/config/0.1.0/config.schema.json"
此 URI 可用于控制模式本身的版本,但我如何检查数据是否使用该模式的正确版本?
将版本标识符作为 URI 的一部分存储在 $id
中很常见,而且似乎是版本控制 JSON 架构的最佳解决方案。 (我还没有看到更好的解决方案,事实证明这种方法可以大规模使用。)
或者,您可以在 JSON 架构中添加您自己的字段,但人员和代码需要知道才能查找它。
当您使用 JSON 架构验证数据时,有时您会加载所有架构,然后指定要使用的架构的 ID。
可以根据需要存储要验证某些 JSON 数据的架构版本。虽然未在 JSON 架构规范中定义,但通常将架构中定义的完整 URI $id
值存储在 $schema
字段中的数据中。
规范中没有定义,因为我们不想对数据规定要求。
我有一项管理某些系统配置的服务,这些配置作为 .json 文件存储在文件系统中。每次启动时,该服务都会启动,读取配置并使用这些值来修改所述系统配置。
在使用这些值之前,我正在使用 JSON 模式验证器来确认数据是否正确。
现在我的问题是,如何实现 JSON 模式的语义版本控制并检查 json 数据是否使用了正确的版本。
目前,如果架构发生变化且数据未更改,验证程序将退出并显示错误代码,这很好。但不太好的是我收到的错误消息。
我喜欢做的是,在验证之前检查数据的版本是否与架构的版本匹配,如果不匹配,则抛出一个期望,告诉用户数据与架构不兼容因为版本不匹配。
经过一些研究后,我在 JSON 模式中发现了以下键:
"$id": "https://my-company.org/schemas/config/0.1.0/config.schema.json"
此 URI 可用于控制模式本身的版本,但我如何检查数据是否使用该模式的正确版本?
将版本标识符作为 URI 的一部分存储在 $id
中很常见,而且似乎是版本控制 JSON 架构的最佳解决方案。 (我还没有看到更好的解决方案,事实证明这种方法可以大规模使用。)
或者,您可以在 JSON 架构中添加您自己的字段,但人员和代码需要知道才能查找它。
当您使用 JSON 架构验证数据时,有时您会加载所有架构,然后指定要使用的架构的 ID。
可以根据需要存储要验证某些 JSON 数据的架构版本。虽然未在 JSON 架构规范中定义,但通常将架构中定义的完整 URI $id
值存储在 $schema
字段中的数据中。
规范中没有定义,因为我们不想对数据规定要求。