#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. Я думаю, что мой первоначальный подход более лаконичен и применим