不支持将 Swagger 用于 Spring Boot API 内容类型“application/octet-stream”

问题描述 投票:0回答:0

我有一个接受多部分表单数据(json 正文和文件上传)的 API。我的 API 在我使用 Postman 时有效,但 Swagger 似乎不喜欢它。有没有办法允许多部分有效载荷?我知道我可以接受 json 主体作为二进制文件上传,但我更愿意允许用户将 json 主体输入 Swagger 中的文本区域。这是我的示例代码:

@PostMapping(value = "/myPost", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public ResponseEntity<MyResult> createPost(
      @RequestPart(value = "body", required = true) MyDTO myDto,
      @RequestPart(required = false) MultipartFile[] attachments) {
   //my code
}

Swagger 然后会显示一个名为 Body 的文本区域,其中包含我的 MyDTO 架构和文件附件表单。当我提交时,我在我的 Spring Boot API 中收到此错误:

org.springframework.web.HttpMediaTypeNotSupportedException:不支持内容类型“application/octet-stream”

我可以将 RequestParts 更改为:

@RequestPart(value = "body") @Parameter(schema = @Schema(type = "string", format = "binary")) final MyDTO myDTO ,
@RequestPart(value = "file", required = false) final MultipartFile[] attachments

这会起作用,但是 Swagger 没有显示 MyDTO 模式的 Body 文本区域,而是只显示两个文件上传表单(Body 上传通过将 JSON 有效负载放入 json 文件并上传来工作)。虽然它可以工作,但会给用户带来不便,因为他们不能只复制 json 有效负载,而必须创建一个单独的 json 文件。有没有办法允许多部分表单同时具有 json 有效负载和文件附件?

谢谢

java spring-boot swagger swagger-ui swagger-2.0
© www.soinside.com 2019 - 2024. All rights reserved.