我遇到了一个看起来非常简单的问题。我有一个http端点,它应该接受JSON正文或上传的文件。
下面是控制器方法的定义:
@PostMapping(value = "/api/endpoint")
public CompletableFuture<ResponseEntity<Void>> createResource(
@RequestParam(name = "file", required = false) MultipartFile file,
@RequestBody(required = false) Command command){
}
Command是一个带有Jackson注释的POJO类,用于反序列化。当我用Content-Type: application/json
传递JSON body时,它工作得很好。但是当我用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--
任何想法是什么导致这一点,谢谢。
发布于 2018-12-05 23:43:43
尝试下面的代码。
@PostMapping(value = "/api/endpoint",consumes = {"multipart/form-data"})
public CompletableFuture<ResponseEntity<Void>> createResource(
@RequestPart("file") MultipartFile file,
@RequestPart Command command){
}
发布于 2018-12-06 00:41:14
您可能需要两个具有不同参数和注释的独立方法。当然,它们每个都可以为它们的共同行为调用一个共享的内部方法。
https://stackoverflow.com/questions/53635524
复制相似问题