Один подход, который кто-то предложил в SO, - это генерировать разные исключения, которые будут отлавливаться разными обработчиками исключений:
@RequestMapping(value = "/system/login", method = RequestMethod.GET)
public void login(@RequestBody Login login) {
if(login.username == "test" && login.password == "test") {
throw new AllRightException();
}
else {
throw new AccessDeniedException();
}
}
@ExceptionHandler(AllRightException.class)
@ResponseStatus(HttpStatus.OK)
public void whenAllRight() {
}
@ExceptionHandler(AccessDeniedException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public void whenAccessDenied() {
}
См. Также:
Кстати, ваш пример кода содержит ошибку: login.password == "test"
вы должны использовать equals()
там:)
Обновлено : я нашел другой подход, который даже лучше, потому что он не использует исключения:
@RequestMapping(value = "/system/login", method = RequestMethod.GET)
public ResponseEntity<String> login(@RequestBody Login login) {
if(login.username == "test" && login.password == "test") {
return new ResponseEntity<String>("OK" HttpStatus.OK);
}
return new ResponseEntity<String>("ERROR", HttpStatus.BAD_REQUEST);
}
См. Также ResponseEntity API