открыть api 3 по умолчанию для создания массива - PullRequest
1 голос
/ 06 мая 2020

Мое определение 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). Как я могу сделать параметр равным нулю или, по крайней мере, пустым списком?

используя sagger в приложении загрузки Spring:

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

1 Ответ

0 голосов
/ 06 мая 2020

Более новая версия генератора уже устраняет эту проблему:

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

Кроме того, добавьте привязку данных Джексона с нулевым значением

 <dependency>
  <groupId>org.openapitools</groupId>
  <artifactId>jackson-databind-nullable</artifactId>
  <version>0.2.1</version>
</dependency>
...