Spring 5 - 阅读JSON或MultipartFile

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (370)

我遇到了一个看似非常简单的问题。我有一个http端点,它应该接受JSON主体或上传文件。

这是控制器方法的定义:

@PostMapping(value = "/api/endpoint")
public CompletableFuture<ResponseEntity<Void>> createResource(
       @RequestParam(name = "file", required = false) MultipartFile file,
       @RequestBody(required = false) Command command){
}

Command是一个POJO类,带有用于反序列化的Jackson注释。当我传递JSON主体时Content-Type: application/json,它工作正常。但是当我传递文件时Content-Type: multipart/form-data,我得到415 Unsupported Media Type。

传递JSON主体时,这是原始的http请求。

POST /api/devices?= HTTP/1.1
Host: localhost:8080
Content-Type: application/json
cache-control: no-cache
{"foo": "bar"}------WebKitFormBoundary7MA4YWxkTrZu0gW--

是什么原因导致了这一点,谢谢。

提问于
用户回答回答于

您可能需要两个具有不同参数和注释的独立方法。当然,每个都可以为他们的共同行为调用共享的内部方法。

用户回答回答于

请尝试以下代码。

@PostMapping(value = "/api/endpoint",consumes = {"multipart/form-data"})
public CompletableFuture<ResponseEntity<Void>> createResource(
       @RequestPart("file") MultipartFile file,
       @RequestPart Command command){
}

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励