【问题标题】:Expanded schemas with AJV带有 AJV 的扩展模式
【发布时间】:2019-09-16 19:21:39
【问题描述】:

是否可以使用 $ref 的 AJV 生成扩展/解析模式? $ref 对于保持架构 DRY 非常有用,但如果您需要架构的扩展表示,则不然。

编译模式时,返回的函数具有schema 属性,但它返回最初提供给编译函数的非扩展模式。此外,文档中似乎没有任何关于它的内容,甚至来自谷歌搜索。

是否可以获得使用$ref 的扩展架构?

【问题讨论】:

  • “扩展/解析架构”是什么意思?
  • 通过扩展/解析是指架构中的任何$ref 都将替换为正在引用的实际架构。
  • @oorst 有几个这样的工具。 npmjs.com/package/json-schema-ref-parser 是我认为使用最广泛的。
  • 但请注意,它们有时不能完全正常工作。如果您的模式大多很简单,那么您应该不会遇到任何问题。它通常被称为取消引用或更准确地说是“嵌入”。

标签: jsonschema ajv


【解决方案1】:

虽然一些工具提供了一定程度的功能来做到这一点,但并不总是能够正确地做到这一点,有时甚至是不可能的。 ajv 说明它不会实现此功能的原因:

  1. 递归 $refs
  2. 列表项 $ref 不等同于对象包含, 因为 $ref 中的 $refs 应该根据 id 中的 源架构,而不是基于当前架构的 ID。

https://github.com/epoberezkin/ajv/issues/336#issuecomment-258538008

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 2020-01-20
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-05
    相关资源
    最近更新 更多