Как перенаправить или ответить на пустой ответ условно в рамках метода single controller?

#java #spring-boot #spring-mvc #redirect #controller

#java #spring-boot #spring-mvc #перенаправление #контроллер

Вопрос:

У меня есть следующий контроллер:

 @Controller
@RequestMapping(path = "/foo/bar")
public classMyController 

    @PostMapping(path = "/acction")
    @ResponseStatus(value = HttpStatus.OK)
    public String doAction(@RequestBody final MyDto request) {
        try {
            someService.resetPassword(request.getSomeData());
            return "Success";
        } catch (MyException e) {
            return String.format("redirect:google.com");
        }
    }
  

Строка return "Success"; выглядит избыточной. Есть ли способ избежать этого?

Комментарии:

1. Я точно не знаю, что вы хотите сделать. Вы хотите избежать множественного return оператора?

2. @hamed Я просто не хочу ничего отвечать в случае успеха

3. Я действительно не понимаю, почему return "Success"; выглядит избыточным, он возвращает представление success. Если он удален, никакой другой код не выполняет действие, следовательно, нет избыточности. Я что-то упускаю или не могли бы вы подробнее рассказать о предполагаемой избыточности?

Ответ №1:

Измените возвращаемый тип на класс ResponseEntity и установите код состояния ответа вместо строки «success».

 @GetMapping("/hello")
ResponseEntity<String> hello() {
    return new ResponseEntity<>("Hello World!", HttpStatus.OK);
}
  

Комментарии:

1. Как сделать перенаправление с использованием ResponseEntity?

2. Почему вам требуется перенаправление в этом примере?

3. Это цель моего вопроса

4. Хорошо, в идеале rest api не должен перенаправлять, он должен возвращать только соответствующий ресурс. Если вы хотите перенаправить в exception, тогда напишите свою логику в @ExceptionHandler

5. Я думаю, что мой первоначальный подход более лаконичен и применим