【问题标题】:OpenAPI models not being generated when using oneOf使用 oneOf 时未生成 OpenAPI 模型
【发布时间】:2022-03-02 20:56:53
【问题描述】:

我在 Spring Boot 中使用 OpenAPI+OpenAPI-generator,并尝试使用架构 oneof,如下所示:

这是requests.yaml文件中的配置:

...

requestBody:
 name: request
 required: true
 content:
   application/json:
     schema:
       oneOf:
         - $ref: 'components.yaml#/Request'
         - $ref: 'components.yaml#/ComplexRequest'

...

这是 components.yaml 文件中的相关配置:

Request:
  allOf:
    - $ref: '#/BaseInfo'
    - type: object
      properties:
        should_create:
          type: boolean
          enum: [ false ]
        reference_id:
          type: string
        required:
          - reference_id

ComplexRequest:
  allOf:
    - $ref: '#/BaseInfo'
    - type: object
      properties:
        should_create:
          type: boolean
          enum: [ true ]
        create_data:
          $ref: '#/Reference'
      required:
        - create_data

BaseInfo:
  type: object
  properties:
    customer_id:
      type: string

Reference:
  type: object
  properties:
    propery_1:
      type: string
    propery_2:
      type: string
    propery_3:
      type: string

由于某种原因,所有这些组件都没有生成,只有这些组件没有生成。 有人可以告诉我我在这里做错了什么吗?

【问题讨论】:

  • 是的,我也注意到this,我真的希望这不是错误,但我在这里错过了一些东西。 :(
  • 我看到理论上应该可以在反序列化时将 Request 与 ComplexRequest 区分开来,因为您需要的字段不同。我有一个使用 openapi-generator 5.4.0 为 java 工作的一代,但我确实添加了一个鉴别器字段(如 requestType:type:string enum:['COMPLEX'])。

标签: polymorphism openapi openapi-generator


【解决方案1】:

如果有人遇到这个问题,我希望能为您节省一些调查时间; 至于 2022 年 3 月,openapi-generator 似乎不支持 oneOf(和 anyOf): https://openapi-generator.tech/docs/roadmap/#short-term

虽然与我的情况不兼容,但您可以尝试此处建议的解决方案: How to use OpenAPI "oneOf" property with openapi-generator-maven-plugin when generating Spring code

【讨论】:

    猜你喜欢
    • 2020-10-26
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 1970-01-01
    • 2022-11-09
    相关资源
    最近更新 更多