이번엔 404, 405 등의 에러를 처리해보자!
Spring Boot에서는 기본적으로 에러 발생 시 /error로 요청을 보냅니다. 이를 받아서 상태 코드를 파악 후 그에 따라서 반환을 해주는 코드를 작성합니다.
@RestController
public class CustomErrorController implements ErrorController {
@RequestMapping("/error")
public ResponseEntity<?> handleError(HttpServletRequest request) {
Object status = request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);
Map<String, String> body = new HashMap<>();
if (status != null) {
int statusCode = Integer.valueOf(status.toString());
if (statusCode == HttpStatus.NOT_FOUND.value()) {
body.put("error","404");
return ResponseEntity.ok(body);
}
if (statusCode != HttpStatus.FORBIDDEN.value()) {
body.put("error","403");
return ResponseEntity.ok(body);
}
body.put("error","500");
return ResponseEntity.ok(body);
}
body.put("error","error");
return ResponseEntity.ok(body);
}
@Override
public String getErrorPath() {
return null;
}
}
SecurityConfig에서 모든 요청을 거부해보도록 하겠습니다.
@Override
protected void configure(HttpSecurity http) throws Exception {
http.httpBasic().and().authorizeRequests().anyRequest().denyAll();
}
성공적으로 처리를 하는 것을 확인할 수 있습니다.
처리 안했을 시