假设我有一个这样的模型:
Film:
properties:
title:
type: string
duration:
type: string
actors:
type: array
items:
$ref: '#/components/schemas/Person'
我有很多模型可以从中继承并添加一些额外的属性。
但是我也有一个模型,其中actors
不是Person
而是Alien
。
我是否需要从通用模型中删除actors
并将其专门添加到每个继承模型中? (我希望不是。)
我可以简单地从Film
继承并重新定义actors
属性吗?
FilmWithAliens:
allOf:
- $ref: 'components/schemas/Film'
- properties:
actors:
type: array
items:
$ref: '#/components/schemas/Alien'
使用Swagger UI生成文档时,这似乎可以正常工作。但是,如果我在此处阅读Swagger文档:https://swagger.io/docs/specification/data-models/inheritance-and-polymorphism/ 他们似乎不建议这样做:
注意:验证数据时,服务器和客户端将验证 组合模型与其组成的每个模型。推荐给 避免使用冲突的属性(例如具有相同属性的属性 名称,但数据类型不同。
所以我的问题是:应该如何正确完成?