我有一个接受多部分表单数据(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 有效负载和文件附件?
谢谢