Здравствуйте, есть задача реализовать RESTful API сервис, который обрабатывает определенные изображения на пк. Информация об изображении передается в json формате, в теле запроса. Пример запроса:
{
"image": "D:/images/[название изображения].png"
}
Но проблема заключается в том, что тип операции, которую необходимо произвести с изображением, может передаваться как с URL, так и с json запросом - добавляя поле
"operation": "flip"
.
Если с url всё понятно, просто создаем необходимые методы в Rest-контроллере, то со вторым вариантом я туплю.
Мне необходимо создать метод, который принимает расширенный вариант запроса и с помощью switch-case вызывать определенные методы сервиса?
@PostMapping(value = "/", consumes = MediaType.APPLICATION_JSON_VALUE,
produces = {MediaType.APPLICATION_XML_VALUE, MediaType.APPLICATION_JSON_VALUE})
public ResponseEntity<RequestWithOperation> common(@RequestBody RequestWithOperation request) {
switch (request.getOperation()) {
case "flip":
imageService.flip(request.getImage());
break;
// Остальные вызовы case...
}
return ResponseEntity.ok(new RequestWithOperation(request.getImage(), request.getOperation()));
}
Мозг мне подсказывает, что это неправильный вариант. Как минимум, код начинает повторятся в местах вызова методов сервиса.
Также хочется узнать, куда будет правильней вынести определение POJO классов Request и RequestWithOperation? В пакет models? С бд работы тут нет.