我正在使用OpenAPI 3.0为我正在构建的服务定义API。我遇到了重用其他组件中的架构组件的问题。例如,我有一个Note
对象,其中包含创建注释的人的Profile
个对象。通过使用Profile
关键字引用$ref
对象,可以正常工作。问题是在显示示例时没有任何配置文件的数据,如果我将ref放在下面的示例中,它包含Profile
的实际OpenAPI块,而不仅仅是{{1}的示例数据组件。
我想知道是否有办法重用其他组件中的组件,并重用这些组件上的示例集?
实施例
Profile
答案 0 :(得分:3)
example
关键字(不要与exampleS
混淆)不支持$ref
。整个示例需要内联指定:
FullNote:
allOf:
- $ref: '#/components/schemas/BaseNote'
- type: object
...
example:
id: 123456789
dateCreated: 1509048083045
influencer:
prop1: value1 # <----
prop2: value2
或者,您可以使用属性级示例 - 在这种情况下,像Swagger UI这样的工具将从属性示例构建架构示例。
FullNote:
allOf:
- $ref: '#/components/schemas/BaseNote'
- type: object
...
properties:
id:
type: integer
format: int32
example: 123456789 # <----
dateCreated:
type: integer
format: int64
example: 1509048083045 # <----
profile:
# This property will use examples from the Profile schema
$ref: '#/components/schemas/Profile'
Profile:
type: object
properties:
prop1:
type: string
example: value1 # <----