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

如何定义列表属性在openapi生成器?

梁骞仕
2023-03-14

我定义OpenAPI 3.0文档并使用OpenAPI-generator-cli-3.3.4。jar生成Java代码(DTO)。但我无法解决这个问题:List

>

  • 地图中

    >

  • 据我所知,我可以使用模式对象:addtionalProperties定义映射类型。

    OpenAPI规范附加属性:值可以是布尔值或对象。内联或引用的架构必须是架构对象,而不是标准的JSON架构。

    如上所述,我不能将Map key设置为整数,对吗?你对这个问题有什么建议吗?

    在<代码>集中

    测试1:设置“唯一项”:true

     {
        "openapi": "3.0",
        "info": {
            "version": "1.0.0",
            "title": "Dr.First Schema",
            "license": {
                "name": "MIT"
            }
        },
        "components": {
            "schemas": {
                "Question": {
                    "type": "object",
                    "properties": {
                        "test": {
                            "type": "array",
                            "items":{
                                "type":"string"
                            }
                        }
                    }
                }
            }
        }
    }
    

    生成Java DTO:未设置为列表

         /**
       * Get test
       * @return test
      **/
      @ApiModelProperty(value = "")
      public List<String> getTest() {
        return test;
      }
    
      public void setTest(List<String> test) {
        this.test = test;
      }
    
    

    测试2:编辑要设置的属性测试类型

        "test": {
           "type": "Set"       
        }
    

    警告

    [main] WARN  o.o.codegen.DefaultCodegen - Unknown type found in the schema: Set
    [main] WARN  o.o.codegen.DefaultCodegen - Unknown type found in the schema: Set
    [main] WARN  o.o.codegen.DefaultCodegen - Unknown type found in the schema: Set
    

    生成JavaDTO:有语法错误

    java prettyprint-override">   /**
       * Get test
       * @return test
      **/
      @ApiModelProperty(value = "")
      public java.util.* getTest() {
        return test;
      }
    
      public void setTest(java.util.* test) {
        this.test = test;
      }
    

    测试3:编辑要设置的属性测试类型

        "test": {
           "type": "set"       
        }
    

    警告

    [main] WARN  o.o.codegen.DefaultCodegen - Unknown type found in the schema: set
    [main] WARN  o.o.codegen.DefaultCodegen - Unknown type found in the schema: set
    [main] WARN  o.o.codegen.DefaultCodegen - Unknown type found in the schema: set
    

    生成Java DTO:有Java集合类型,但不知道如何设置泛型

          /**
       * Get test
       * @return test
      **/
      @ApiModelProperty(value = "")
      public Set getTest() {
        return test;
      }
      public void setTest(Set test) {
        this.test = test;
      }
    
    • 有什么建议来修复地图吗

  • 共有1个答案

    公孙俭
    2023-03-14

    对于openapi 3.0.3版,这个Java泛型集的例子是有效的

    yaml定义:

    mapOfSets:
          type: object
          additionalProperties:
            type: setOfStrings
    

    马文·波姆。openapi生成器maven插件的xml配置:

    <typeMappings>
      <typeMapping>setOfStrings=Set&lt;String&gt;</typeMapping>
    </typeMappings>
    
    <importMappings>
      <importMapping>Set&lt;String&gt;=java.util.Set</importMapping>
    </importMappings>
    

    生成Java代码:

    private Map<String, Set<String>> mapOfSets = null;
    

    这里,setOfStrings是一种自定义openapi类型,它在pom中定义了自定义映射。xml,并将生成集合

     类似资料:
    • 当使用swagger 2.0时,java。util。Currency类作为一个单独的定义生成。但当我们生成OpenAPI 3.0时,我们遇到了一个问题,即swagger core将其作为属性生成。 我们有f.e.这门课: 根据这段代码,我们使用以下插件配置生成openapi规范: 生成时,这将导致此组件定义: 然后,我们使用以下插件在另一个项目中生成类: 生成类的代码构成了此openapi规范:

    • 我正在为一个api创建一个OpenAPI 3规范,该API具有需要某些属性的对象,对于某些属性,它们是任何对象。当我创建如下规范时,它会抛出一个错误,我无法修复。 Swagger编辑器给出了如下错误 - 在使用如下建议时 验证错误消失了,但swagger编辑器模式/模型视图未显示任何内容,如下所示 -

    • 我已经编写了一个web服务定义作为OpenAPI文档。我使用的openapi生成器maven插件总是使用poms和gradle构建脚本生成整个项目,但我只需要生成POJO,可能还需要生成API客户端。它应该同样适用于JaxB或JaxWS代码生成器。 那么有没有办法告诉插件只生成Java代码呢?也许有另一个插件可以完成这项工作? 以下是我的配置:

    • 我正在开发一个具有Angular前端和RESTful Spring Boot Backend的应用程序 我从org.openapitools.找到了这个非常方便的maven插件openapi生成器maven插件凭借其代码生成功能,它有助于在我们的应用编程接口的前端和后端之间实施“合同优先”的方法。但是我们的swagger文件在请求体和响应体定义中使用了“oneOf”属性。我试图从中生成Spring

    • 我试图在使用openapi 3规范设计的API中引入可为null的属性。其思想是始终将属性返回给客户端,无论其值是否为null。 YAML文件(我先尝试了,没有默认,结果相同): 生成Java代码: API的响应: 因此,无论属性是否为null,结果总是“present:true”。如果没有nullability,它就可以正常工作,除了从响应中删除不需要的null值。 有什么想法吗? P、 该物业

    • 问题内容: 我一直在尝试使用AlloyUI的图表构建器示例。 我需要添加一些额外的自定义节点类型以及这些节点的一些其他属性。我曾考虑过修改然后构建库,但这听起来像是对这项任务的过大杀伤力,而且我在构建时遇到了问题。 是否有捷径可寻? 更新 我意识到我可以直接修改构建文件夹中的文件以摆脱构建过程。我尝试添加类似的内容: 到。 我有这样的主要javascript文件结构: 我知道可以在图表中添加自定义