Spring 5 - чтение JSON или MultipartFile - PullRequest
0 голосов
/ 05 декабря 2018

Я столкнулся с тем, что выглядит как действительно простая проблема.У меня есть конечная точка http, которая должна принимать либо тело JSON, либо загруженный файл.

Вот определение метода контроллера:

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

Команда - это класс POJO с аннотациями Джексона для десериализации.Когда я передаю тело JSON с Content-Type: application/json, оно работает нормально.Но когда я передаю файл с Content-Type: multipart/form-data, я получаю 415 неподдерживаемых типов носителей.

Вот необработанный http-запрос при передаче только тела JSON.

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

Любойидеи, что вызывает это, спасибо.

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Вам могут понадобиться два отдельных метода с разными параметрами и аннотациями.Который, конечно, каждый может просто вызывать общий внутренний метод для их общего поведения.

0 голосов
/ 05 декабря 2018

Попробуйте следующий код.

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