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

Springdoc-openapi-ui OpenAPI Java生成器继承

皇甫波峻
2023-03-14

**代码:(类名已重命名)**

两个版本中的CheeseDTO YAML:

   CheeseDTO:
     type: object
     properties:
       cheeseType:
         type: string
     discriminator:
       propertyName: cheeseType    

使用springdoc-openapi-ui 1.3.9,我的yaml是这样生成的:

   MyDTO:
       type: object
       properties:
           cheeses:
           type: array
           items:
               $ref: '#/components/schemas/CheeseDTO'
MyDTO:
       type: object
       properties:
           cheeses:
           type: array
           items:
               oneOf:
               - $ref: '#/components/schemas/SoftCheeseDTO'
               - $ref: '#/components/schemas/HardCheeseDTO'    

昂首阔步3注释:

@Schema(
name = "CheeseDTO",
discriminatorProperty = "cheeseType",
discriminatorMapping = {@DiscriminatorMapping(value = "Brie", schema = SoftCheeseDTO.class),
 @DiscriminatorMapping(value = "Banon", schema = SoftCheeseDTO.class),
 @DiscriminatorMapping(value = "Cheddar", schema = HardCheeseDTO.class)})
abstract CheeseDTO

   private String cheeseType;
@Schema(allOf = {CheeseDTO.class})
SoftCheeseDTO extends CheeseDTO
@Schema(allOf = {CheeseDTO.class})
HardCheeseDTO extends CheeseDTO

OpenAPi生成器maven插件

<plugin>
       <groupId>org.openapitools</groupId>
       <artifactId>openapi-generator-maven-plugin</artifactId>
       <version>4.3.0</version>
       <executions>
         <execution>
           <id>generateWebQuoteApiClient</id>
           <goals>
             <goal>generate</goal>
           </goals>
           <configuration>
             <inputSpec>/definitions/webQuoteApi.yaml</inputSpec>
             <generatorName>java</generatorName>
             <generateApiDocumentation>false</generateApiDocumentation>
             <configOptions>
               <library>jersey2</library>
               <dateLibrary>java8</dateLibrary>
               <java8>true</java8>
               <modelPackage>${client.package}.model</modelPackage>
               <apiPackage>${client.package}.api</apiPackage>
               <invokerPackage>${client.package}.api</invokerPackage>
               <performBeanValidation>false</performBeanValidation>
               <serializationLibrary>jackson</serializationLibrary>
             </configOptions>
           </configuration>
         </execution>
       </executions>
     </plugin>

有没有办法用springdoc-openapi-ui>1.4.0生成列表 ?我必须更改我的大摇大摆的注释或更改我的java生成器吗?

共有1个答案

万俟玉书
2023-03-14

我们在较新的sprindoc openapi UI中也看到了同样的问题。您需要坚持使用springdoc-openapi-ui 1.3.9。

Generator上也有类似的问题:

在openapi-generator-maven-plugin 4.3.1之前,您可以通过以下方式完成:

CheeseDTO:
  type: object
  properties:
    cheeseType:
      type: string
  discriminator:
    propertyName: cheeseType
    mapping:
      SOFT_CHEESE: '#/components/schemas/SoftCheeseDTO'
      HARD_CHEESE: '#/components/schemas/HardCheeseDTO'
MyDTO:
  type: object
  properties:
    cheeses:
      type: array
        items:
          $ref: '#/components/schemas/CheeseDTO'
 类似资料:
  • 我有一个Spring Boot(kotlin)项目,我使用springdoc openapi生成openapi 3规范。我的数据模型如下所示: 还有一个简单的控制器,如下所示: 生成的yaml为: 这里的问题是我的控制器可以返回或,这在返回类型中指定。我期望生成的模式是: 有没有办法做到这一点?

  • 我使用的是默认配置,但由于某种原因,我一直收到以下错误: 任务“Generate OpenApidocs”执行失败。无法连接到http://localhost:8080/v3/api-文档等待了30秒 似乎由于某种原因,它没有设置服务器。我该怎么修好它?

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

  • 我正在从swagger(Open API 2)转向springdoc(Open API 3),但今天在某些情况下,我使用swagger-codemen-maven-plugin从yaml生成代码(用于客户端和提供商),遵循合同优先策略。下面是配置示例: 使用springdoc openapi maven插件生成代码有没有等效的选项?

  • 我已经使用MongoDB启动了一个新的Spring Boot应用程序(2.2.1.RELEASE)。 为了创建一些API文档,我添加了springdoc API: 由于我依赖Spring来处理RESTendpoint的生成,因此我创建了以下简单的存储库: 所以我没有使用的类。 我试图添加一些ProfileRepository中方法的注释,但不会生成任何内容。 : 如何为Spring数据REST存储

  • 我试图在maven构建期间生成swagger.json文件。 这是我在pom.xml中从docs获得的插件。 任何帮助都将不胜感激。