Having the following code:
@RequestMapping(value = \"/system/login\", method = RequestMethod.GET)
public void login(@RequestBody Login login) {
if(login.use
One approach which someone suggested at SO is to throw different exceptions which will be catch by different exception handlers:
@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() {
}
See also:
BTW, your example code contains error: login.password == "test"
you should use equals()
there :)
Updated: I found another approach which even better because it doesn't use exceptions:
@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);
}
See also ResponseEntity API