spring-boot - 打开 api 3 默认数组生成

标签 spring-boot swagger-2.0 openapi-generator

我的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<>()")

Controller 收到的实际参数不为空,包含文字 new ArrayList<>()作为第一个元素:

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

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

在 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>

最佳答案

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

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

关于spring-boot - 打开 api 3 默认数组生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61634809/

相关文章:

java - Swagger 忽略了生成代码的必填字段

java - 避免在 Spring Boot 应用程序中向 Sentry 报告 Broken Pipe 错误

java - Spring - 将任务安排在某个时间段

go - 如何将 JWT 身份验证添加到 swagger (go + echo + swaggo/swag)

rest - 一个 Swagger 文件中的多个 API 文档

java - 更改 Spring openapi-generator-maven-plugin 生成的接口(interface)的返回类型

python - 将 OpenAPI Generator 生成的模型与 sqlalchemy 结合使用

java - Spring JPA Crud 存储库保存不返回 UUID 字段

spring - 将 Spring Boot 升级到 3.0.6 后,在 Mac M1 中无法从 Webclient 解析 oauth 端点

java - Swagger 定制模型