json-schema重复代码

时间:2016-08-19 22:26:44

标签: swagger jsonschema json-schema-validator

这个模式在我的项目中反复出现(六次):

        type: object
          properties:
            total:
              type: integer
              description: the count of all items that match the query
            hits:
              type: array
              description: a single page of results
              items:
                $ref: '#/definitions/{various schema}'

此重复模式({various schema})的内部部分因使用而异。我想为每一个引用共享代码,而不是重复自己。我通常使用$ref,但由于变量位,这似乎无法在这里工作。

我已尝试让anyOf为我工作,但它只会改变properties的{​​{1}},但我试图改变object } items

我有什么遗失的东西吗?可能是一个小型重构,使其适合可重复使用的模式?

1 个答案:

答案 0 :(得分:1)

您可以定义重复的模式,items约束除外,然后在每个变体中使用allOf

您的可重用架构将采用以下方式:

  reusable:
    type: object
      properties:
        total:
          type: integer
          description: the count of all items that match the query
        hits:
          type: array
          description: a single page of results

如果要定义变体,可以使用allOf添加可重用模式和附加约束:

variation1:
  allOf:
    - reusable
    - properties:
        hits:
          items:
            $ref: '#/definitions/variation_schema'