当前位置: 首页 > 知识库问答 >
问题:

使用其中一个时未生成OpenAPI模型

毕富
2023-03-14

我正在使用带有spring boot的OpenAPI OpenAPI生成器,并尝试使用以下模式之一:

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

...

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

...

这是组件中的相关配置。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

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

共有1个答案

柯昆杰
2023-03-14

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

虽然与我的情况不兼容,但您可以尝试这里建议的解决方案:在生成Spring代码时,如何将OpenAPI“oneOf”属性与OpenAPI生成器maven插件一起使用

 类似资料:
  • 如何使用将此代码段调整为等效的OpenAPI 2.0版本?

  • OpenAPI3.0规范规定,没有任何类型的模式将匹配任何数据类型。 没有类型的模式匹配任何数据类型--数字、字符串、对象等等。 因此,对此进行建模的正确方法是下面的Swagger定义,其中没有属性: 但是,每个开放问题Swagger-core#3834,Java值都映射到OpenAPI类型,而不是任意类型。如上所述,这意味着这样的API返回或接受不是OpenAPI的类型是不正确的,例如、、等。

  • 我们不允许寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便用事实和引用来回答。 我正在学习OpenAPI规范。是否有任何工具可以模拟基于YAML格式的OpenAPI定义的API?

  • 我正在尝试在这两种语言中生成客户端代码。使用NSwag CLI的NET Core和TypeScript: 这适用于各种Swagger 2.0 JSON文件,但为OpenApi 3.0 JSON文件生成多个具有完全相同名称的函数。 我的选择。swag文件具有以下内容。NET(TypeScript以类似的方式生成,存在相同的问题): 是否有一种方法可以控制函数名的生成,以便添加一些判别式(类似于依赖于

  • 我有一个Spring启动应用程序,使用springdoc-openapi启用了昂首阔步的留档。由于某种原因,有一个名为/application.wadl的终结点会自动创建,而不会添加任何逻辑。有没有办法禁用wadl终结点?我没有在application.yml文件中添加特定的Wadl配置