@PenguinVasily

Как обрабатывать изменяемые параметры запроса?

Здравствуйте, есть задача реализовать 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? С бд работы тут нет.
  • Вопрос задан
  • 50 просмотров
Пригласить эксперта
Ответы на вопрос 1
xez
@xez
TL Junior Roo
В контроллере не должно быть логики точно.
Я бы в контроллере как-то получал необходимые параметры изображение и метод и передавал в сервис.
Сервис пусть там уже разбирается.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы