如何在Swagger / OAS 3中覆盖模型的数据类型?

时间:2019-05-28 12:33:09

标签: swagger openapi

假设我有一个这样的模型:

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/ 他们似乎不建议这样做:

  

注意:验证数据时,服务器和客户端将验证   组合模型与其组成的每个模型。推荐给   避免使用冲突的属性(例如具有相同属性的属性   名称,但数据类型不同。

所以我的问题是:应该如何正确完成?

0 个答案:

没有答案