使用 oneOf 时未生成 OpenAPI 模型

OpenAPI models not being generated when using oneOf

我在 spring 引导下使用 OpenAPI+OpenAPI 生成器,并尝试按如下方式使用架构 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

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

如果有人遇到这个问题,希望我能为您节省一些调查时间; 至于 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