open api 3 默认数组生成
open api 3 default Array generation
我的API定义如下:
/api:
get:
...
parameters:
- name: "tags"
in: "query"
description: "some description"
required: false
schema:
type: "array"
items:
type: "string"
....
我们正在使用 openapi-generator-maven-plugin:3.3.5
进行代码生成。
生成的API参数:@ApiParam(value = "description", defaultValue = "new ArrayList<>()")
控制器接收到的实际参数不为空,包含文字new ArrayList<>()
作为第一个元素:
String first = tags.get(0);
assert "new ArrayList<>()".equals(first) //true
我找不到任何控制此行为的参数值(如 defaultValue)。
如何使参数为 null 或至少为空列表?
在 Spring 启动应用程序中使用 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>
较新的生成器版本已修复此问题:
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>4.3.0</version>
...
</plugin>
此外,添加 Jackson databind-nullable
<dependency>
<groupId>org.openapitools</groupId>
<artifactId>jackson-databind-nullable</artifactId>
<version>0.2.1</version>
</dependency>
这里有同样的问题,但无法正常工作。
但是您可以添加一些验证以查看列表是否包含至少一个元素,例如
/api:
get:
...
parameters:
- name: "tags"
in: "query"
description: "some description"
required: false
schema:
type: "array"
minItems: 1
items:
type: "string"
....
我的API定义如下:
/api:
get:
...
parameters:
- name: "tags"
in: "query"
description: "some description"
required: false
schema:
type: "array"
items:
type: "string"
....
我们正在使用 openapi-generator-maven-plugin:3.3.5
进行代码生成。
生成的API参数:@ApiParam(value = "description", defaultValue = "new ArrayList<>()")
控制器接收到的实际参数不为空,包含文字new ArrayList<>()
作为第一个元素:
String first = tags.get(0);
assert "new ArrayList<>()".equals(first) //true
我找不到任何控制此行为的参数值(如 defaultValue)。 如何使参数为 null 或至少为空列表?
在 Spring 启动应用程序中使用 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>
较新的生成器版本已修复此问题:
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>4.3.0</version>
...
</plugin>
此外,添加 Jackson databind-nullable
<dependency>
<groupId>org.openapitools</groupId>
<artifactId>jackson-databind-nullable</artifactId>
<version>0.2.1</version>
</dependency>
这里有同样的问题,但无法正常工作。 但是您可以添加一些验证以查看列表是否包含至少一个元素,例如
/api:
get:
...
parameters:
- name: "tags"
in: "query"
description: "some description"
required: false
schema:
type: "array"
minItems: 1
items:
type: "string"
....