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

OpenAPI3默认数组生成

毛成济
2023-03-14

我的API定义如下:

/api:
  get:
  ...
  parameters:
     - name: "tags"
       in: "query"
       description: "some description"
       required: false
       schema:
         type: "array"
         items:
           type: "string"
  ....

我们使用openapi生成器maven-plugin:3.3.5生成代码。

生成的API参数:@ApiParam(value=“description”,defaultValue=“new ArrayList

控制器接收的实际参数不是空的,并且包含literalnew ArrayList

String first = tags.get(0);
assert "new ArrayList<>()".equals(first) //true

我找不到任何控制此行为的参数值(如defaultValue)。如何使参数为null或至少为空列表?

在Spring boot应用程序中使用sagger:

 <dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-swagger2</artifactId>
  <version>${io.springfox.swagger.version}</version>
</dependency>

openapitools生成器配置选项

  <configOptions>
      <dateLibrary>java8</dateLibrary>
      <serializationLibrary>jackson</serializationLibrary>
      <interfaceOnly>true</interfaceOnly>
      <delegatePattern>true</delegatePattern>
      <useTags>true</useTags>
  </configOptions>

共有2个答案

步衡
2023-03-14

这里有同样的问题,但无法使其工作。但您可以添加一些验证来查看列表是否至少包含一个元素,例如。

/api:
  get:
  ...
  parameters:
   - name: "tags"
     in: "query"
     description: "some description"
     required: false
     schema:
       type: "array"
       minItems: 1
       items:
         type: "string"
  ....
易招
2023-03-14

较新的生成器版本已经修复了此问题:

<plugin>
    <groupId>org.openapitools</groupId>
    <artifactId>openapi-generator-maven-plugin</artifactId>
    <version>4.3.0</version>
    ...
</plugin>

另外,添加Jackson数据库为空

 <dependency>
  <groupId>org.openapitools</groupId>
  <artifactId>jackson-databind-nullable</artifactId>
  <version>0.2.1</version>
</dependency>
 类似资料:
  • 龙目岛的版本是1.18.0。 我在类级别设置了。 当我尝试为列表变量设置默认值时: 我得到一个错误: 除了自己编写生成器之外,还有其他方法吗?

  • 问题内容: 当我运行它时,它拒绝“ def a(…”,并用红色突出显示“(”。我不知道为什么。 问题答案: 让我在这里澄清两点: 首先,非默认参数不应跟随默认参数,这意味着您无法在函数中定义。在函数中定义参数的正确顺序为: 位置参数或非默认参数,即 关键字参数或默认参数,即 仅关键字参数,即 var-keyword参数,即 是位置参数 是可选参数 是关键字参数 是列表参数 仅限关键字 是var-k

  • 问题内容: 我有一个spring控制器方法,该方法接收一些可选数组作为参数。它们不是必需的,但是我希望它们不为null,而当它们不在controller方法接收的参数中时,只是空数组。我知道,我可以检查它们是否为空,然后将其分配为新对象,但这会生成许多样板代码。另外,当我尝试执行以下操作时: 当我在网址中未提供参数(这很奇怪)时,我收到第400条错误,原因是必填字段为false。 大家有什么想法吗

  • 试图用Joda DateTimes生成JooQ POJOs,我遇到了一些问题。POJO使用默认的java.sql从生成器中生成。时间戳值,而不是日期时间。 代码如下。 Create Table(此处时间戳字段的名称已更改)希望确保我没有命中构建系统中的某个缓存。此名称仍应与下面的正则表达式匹配。 转换类——基于文档。 Jooq配置XML。基于文档(感谢您捕获我的表达式/表达式错误Luke)! 创建

  • 我有两个类,其中父类在构建时需要来自子类的一些属性。有没有一种方法可以使用lombok构建器来支持这一点? Parent.java 小孩JAVA 上面的编译失败,并显示消息 错误:无法从静态上下文@SuperBuilder引用非静态方法getRequest estType()

  • 如果要手写,有没有sql编辑器,能够生成像上面sql一样的带转义符号的语句,而不是自己全部手写