我有一个像这样的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创建这样的映射或别名,还是有一个共同的解决方法?如果没有,是否有人建议使用另一种工具来定义这种关系?