OpenAPI 3 / Spring Boot @RequestPart не является обязательным - PullRequest
0 голосов
/ 13 февраля 2020

У меня небольшая проблема с созданием пути загрузки в моем API. Например:

/test/upload:
    post:
      operationId: post form attachemnts
      requestBody:
        content:
          multipart/form-data: 
            schema:            
              type: object
              required:
                - testId
              properties:
                testId:
                  type: string
                  example: 1
                document:
                  type: string
                  format: binary

Я хочу отправить testId (Обязательно - это нормально), но мой документ (jpg, pdf) должен быть необязательным.

Часть кода, созданная openapi- generator-maven-plugin: 4.2.3:

@RequestParam(value="testId", required=true)  String testId,@ApiParam(value = "") @Valid @RequestPart("document") MultipartFile document

Когда я отправляю сообщение в почтальоне только с заполненным testId, я получаю: "Required request part 'document' is not present"

Я думаю, что проблема частично @RequestPart("document") MultipartFile document и правильный сгенерированный код должен выглядеть следующим образом @RequestPart(value="document", required=false) MultipartFile document. Но как этого добиться?

Документ, созданный в Swagger Editor, OpenAPI 3.0.2, SB 2.2.1.RELEASE Объявленные зависимости:

<dependency>
    <groupId>io.swagger</groupId>
    <artifactId>swagger-annotations</artifactId>
    <version>1.6.0</version>
</dependency>
<dependency>
    <groupId>com.squareup.okhttp</groupId>
    <artifactId>okhttp</artifactId>
    <version>2.7.5</version>
</dependency>
<dependency>
    <groupId>com.squareup.okhttp</groupId>
    <artifactId>logging-interceptor</artifactId>
    <version>2.7.5</version>
</dependency>
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.6</version>
</dependency>

<dependency>
    <groupId>joda-time</groupId>
    <artifactId>joda-time</artifactId>
    <version>2.10.5</version>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.10.2</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.10.2</version>
</dependency>
<dependency>
    <groupId>org.openapitools</groupId>
    <artifactId>jackson-databind-nullable</artifactId>
    <version>0.2.1</version>
</dependency>

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <type>jar</type>
    <version>1.1.0.Final</version>
</dependency>
<dependency>
    <groupId>javax.annotation</groupId>
    <artifactId>javax.annotation-api</artifactId>
    <version>1.3.2</version>
</dependency>
<dependency>
    <groupId>org.threeten</groupId>
    <artifactId>threetenbp</artifactId>
    <version>1.4.1</version>
</dependency>
<dependency>
    <groupId>io.gsonfire</groupId>
    <artifactId>gson-fire</artifactId>
    <version>1.7.1</version>
</dependency>
</dependencies>
...