Spring Boot-6

dbghwns11·2021년 5월 15일
0

Spring Boot

목록 보기
7/7

이번엔 404, 405 등의 에러를 처리해보자!


CustomErrorController 작성

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();
}

성공적으로 처리를 하는 것을 확인할 수 있습니다.

처리 안했을 시

profile
인공지능 & 컴퓨터비전 개발자를 꿈꾸는 학생

0개의 댓글