Swagger类型鉴别器别名或映射

时间:2017-03-01 10:54:04

标签: inheritance swagger discriminator

我有一个像这样的Swagger 2.0定义:

definitions:
  Foo:
    type: object
    properties:
      name:
        type: string
      fooType:
        type: string
    required:
      - name
      - fooType
    discriminator: fooType

  StringFoo:
    type: object
    allOf:
      - $ref: '#/definitions/Foo'
    properties:
      values:
        type: array
        items: 
          type: string

  BooleanFoo:
    type: object
    allOf:
      - $ref: '#/definitions/Foo'
    properties:
      values:
        type: array
        items: 
          type: boolean

我希望我的API客户端能够构造(例如)由不同Foo对象组成的数组。为此,他们会写出如下内容:

[
  {
    "name":"bar",
    "fooType":"StringFoo",
    "value":"baz"
  },
  {
    "name":"quux",
    "fooType":"BooleanFoo",
    "value":true
  }
]

但是,我认为当客户端必须引用定义的名称(StringFoo和BooleanFoo)时,它看起来相当丑陋,特别是对于没有手头的Swagger定义而实现的客户端。相反,如果fooType变量可以具有值" string"那么它将更简洁。和"布尔"。我意识到我需要从" string"中获得一些映射。 to" StringFoo"并且来自" boolean" to" BooleanBar"。某种别名只适用于Foo鉴别器。

我可以命名我的定义" string"和"布尔" (这是否允许?),但它只适用于一种类型架构,我在我的API的多个位置都有这个问题。

有没有办法用Swagger创建这样的映射或别名,还是有一个共同的解决方法?如果没有,是否有人建议使用另一种工具来定义这种关系?

0 个答案:

没有答案