Я разрабатываю REST API с помощью Spring и хотел бы, чтобы API обрабатывал запросы POST с различными типами мультимедиа, а именно данные формы JSON в теле запроса или файл JSON, отправленный через запрос.
Итак, когда у меня есть два отдельных метода с такими сигнатурами, оба работают нормально,
@RequestMapping(value = "/configuration" , method = RequestMethod.POST, consumes = {MediaType.MULTIPART_FORM_DATA_VALUE})
public String setConfiguration(@RequestPart MultipartFile file)
@RequestMapping(value = "/configuration" , method = RequestMethod.POST, consumes = {MediaType.APPLICATION_JSON_VALUE}
public String setConfiguration(@RequestBody Configuration configuration)
Логика обработки обоих методов почти одинакова, поэтому я пытаюсь использовать один метод для поглощения обоих типов формата данных с помощью этого кода:
@RequestMapping(value = "/configuration" , method = RequestMethod.POST, consumes = {MediaType.APPLICATION_JSON_VALUE, MediaType.MULTIPART_FORM_DATA_VALUE})
public String setConfiguration(@RequestPart MultipartFile file, @RequestBody Configuration configuration)
Однако ответ об ошибке будет возвращен как,
{"timestamp": 1443744180124,
"status": 500,
"error": "Internal Server Error",
"exception": "org.springframework.web.multipart.MultipartException",
"message": "The current request is not a multipart request",
"path": "/v1/testconfiguration"
}
Хотите знать, есть ли у меня какое-то фундаментальное непонимание типа носителя REST, и если это выполнимо, как я могу добиться этого с помощью Spring?