移除 voluptuous 并使用 JSONSchema 作为我们唯一的 JSON 验证工具

https://blueprints.launchpad.net/watcher/+spec/jsonschema-validation

目前在 Watcher 中,JSONSchema 和 voluptuous 都被用来验证 JSON 数据。然而,voluptuous 的结构不如 JSONSchema 标准化。这个问题使得通过我们的 API 暴露验证模式变得困难。因此,我们希望移除现有的 voluptuous 验证,并使用 JSONSchema 作为我们唯一的 JSON 验证工具来验证 JSON 数据。

问题描述

此蓝图将用 JSONSchema 替换 Watcher 中现有的 voluptuous 验证,并使用 JSONSchema 作为唯一的 JSON 验证工具来验证 JSON 数据。

用例

作为一名开发者,我希望拥有一个一致且标准的 JSON 数据验证系统,这将使以后将所有验证模式组合在一起并通过 API 暴露它们变得更容易。

提议的变更

对于每个 Watcher 操作,我们需要引入一个新的 JSONSchema 来验证其输入参数,当它到达 Applier 时。

我们需要引入新的 JSONSchema 来验证功效指标。

备选方案

我们也可以使用 voluptuous 验证作为我们唯一的验证工具,但是 voluptuous 与 JSONSchema 相比并不标准化。

数据模型影响

传入的请求表示为一个对象,在这种情况下,请求对象将拥有 jsonschema 验证器作为其属性。

此蓝图不应需要数据库迁移或数据库模式更改。

REST API 影响

这会对 API 产生影响,因为它会改变功效规范的显示格式。

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

Yumeng Bao <yumeng+bao>

工作项

  • 移除 voluptuous 模式

目前,voluptuous 被用来:- 验证 Watcher 操作的输入参数,当它到达 Applier 时。- 验证功效指标。* 实现 jsonschemas 来验证功效指标和 Watcher Applier 中操作的输入参数。* 实现适当的单元测试来测试各种场景。

依赖项

预计没有

测试

适当的单元测试将被调整以适应新的更改。

文档影响

需要添加与此更改相关的新内容。

参考资料

https://blueprints.launchpad.net/watcher/+spec/jsonschema-validation https://python.libhunt.com/project/jsonschema/vs/voluptuous

历史

没有历史记录