Используя RequestMapping, вы можете создавать разные ответы для каждого кода Http.В этом примере я показываю, как управлять ошибками и дать соответствующий ответ.
Это RestController со спецификацией службы
@RestController
public class User {
@RequestMapping(value="/myapp/user/{id}", method = RequestMethod.GET)
public ResponseEntity<String> getId(@PathVariable int id){
if(id>10)
throw new UserNotFoundException("User not found");
return ResponseEntity.ok("" + id);
}
@ExceptionHandler({UserNotFoundException.class})
public ResponseEntity<ErrorResponse> notFound(UserNotFoundException ex){
return new ResponseEntity<ErrorResponse>(
new ErrorResponse(ex.getMessage(), 404, "The user was not found") , HttpStatus.NOT_FOUND);
}
}
В методе getId есть небольшая логика, еслиcustomerId <10 Должен отвечать на идентификатор клиента как часть основного сообщения, но должно быть выброшено исключение, когда клиент больше 10, в этом случае служба должна ответить ErrorResponse. </p>
public class ErrorResponse {
private String message;
private int code;
private String moreInfo;
public ErrorResponse(String message, int code, String moreInfo) {
super();
this.message = message;
this.code = code;
this.moreInfo = moreInfo;
}
public String getMessage() {
return message;
}
public int getCode() {
return code;
}
public String getMoreInfo() {
return moreInfo;
}
}
И, наконец,Я использую определенное исключение для ошибки "Not Found"
public class UserNotFoundException extends RuntimeException {
public UserNotFoundException(String message) {
super(message);
}
}