0

我正在尝试使用 OpenApi 支持实现一个简单的 Spring FileUpload。我正在使用 spring-boot:2.5.8 和 openapi-generator-maven-plugin:5.3.1

这是我的 OAS:

  /api/datas/{id}:
post:
  operationId: uploadFile
  tags:
    - file
  parameters:
    - in: path
      name: id
      required: true
      schema:
        type: integer
  requestBody:
    content:
      multipart/form-data:
        schema:
          type: object
          required:
            - file
            - docName
          properties:
            file:
              type: string
              format: binary
            docName:
              type: string
            docGroup:
              type: integer

   

OpenApi 生成器创建了这样一个方法。

    @RequestMapping(
    method = RequestMethod.POST,
    value = "/api/datas/{id}",
    consumes = { "multipart/form-data" }
)
default ResponseEntity<Void> uploadFile(
      @ApiParam(value = "", required = true) @PathVariable("id") Integer id,
      @ApiParam(value = "")           @Valid @RequestPart(value = "file", required = true) MultipartFile file,
      @ApiParam(value = "", required = true) @Valid @RequestPart(value = "docName", required = true) String docName,
      @ApiParam(value = "") @Valid @RequestPart(value = "docGroup", required = false) Integer docGroup) {
    return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED);

}

问题是 Spring 没有针对 Integer、Enum 或 Date 等类型的 HttpMessageConverter,我希望能够将其定义为 requestBody,因此 Spring 会抛出“不支持的媒体类型”异常。

我真的需要为简单类型实现一堆 MessageConverters,还是有更好的解决方案?我试图强制 spring-openapi-generator 为简单的属性创建 @RequestParam,但不知道如何。

最后,我希望能够发布一个包含文件的简单表单,我需要为此使用 OpenApi。

4

0 回答 0