我遇到了一个看起来很简单的问题。我有一个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注释。
当我通过 Content-Type: application/json
传递JSON正文时,它可以正常工作。但是,当我使用 Content-Type: multipart/form-data
传递文件时,我得到415不支持的媒体类型。
仅传递JSON正文时,这是原始的http请求。
POST /api/devices?= HTTP/1.1
Host: localhost:8080
Content-Type: application/json
cache-control: no-cache
{"foo": "bar"}------WebKitFormBoundary7MA4YWxkTrZu0gW--
任何想法都是由什么引起的,谢谢。
答案 0 :(得分:0)
尝试以下代码。
@PostMapping(value = "/api/endpoint",consumes = {"multipart/form-data"})
public CompletableFuture<ResponseEntity<Void>> createResource(
@RequestPart("file") MultipartFile file,
@RequestPart Command command){
}
答案 1 :(得分:0)
您可能需要两种具有不同参数和注释的单独方法。当然,每个人都可以为它们的共同行为调用一个共享的内部方法。