๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป ํ”„๋กœ์ ํŠธ/๐Ÿ› ๏ธ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…

[ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…] ์ˆ™๋ จ CRUD ๊ธฐ๋ฐ˜์˜ ํ…Œ์ŠคํŠธ, ๊ฐœ์„  ๊ณผ์ œ

by carrot0911 2025. 1. 6.

๊ณผ์ œ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

 

๋ฌธ์ œ ์ƒํ™ฉ

Filter์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ๋ฅผ GlobalExceptionHandler๋ฅผ ์ด์šฉํ•ด์„œ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ํ–ˆ์ง€๋งŒ, Postman์„ ์‹คํ–‰ํ–ˆ์„ ๋•Œ 500 Internal Error๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

๋ฌธ์ œ ์›์ธ

@RestControllerAdvice๋Š” Filter์—์„œ ๋ฐœ์ƒํ•œ ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๋Š”๋‹ค.

  • Filter๋Š” Controller๋กœ ์š”์ฒญ์ด ์ „๋‹ฌ๋˜๊ธฐ ์ „์— ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์—, @RestController๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ์˜์—ญ์ด๋‹ค.

์ด๋กœ ์ธํ•ด ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•˜๊ณ  500 Internal Error๊ฐ€ ๋ฐ˜ํ™˜๋˜์—ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

Filter ๋‚ด์—์„œ ์ง์ ‘ HTTP ์ƒํƒœ ์ฝ”๋“œ์™€ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ์„ค์ •ํ•ด์„œ ์‘๋‹ตํ•˜๋„๋ก ์ˆ˜์ •ํ–ˆ๋‹ค.

์ˆ˜์ •๋œ ์ฝ”๋“œ

if (session == null || session.getAttribute("loginMember") == null) {
    httpResponse.setCharacterEncoding("UTF-8"); // UTF-8๋กœ ์ธ์ฝ”๋”ฉ ์„ค์ •
    httpResponse.setContentType("application/json; charset=UTF-8"); // Content-Type ์„ค์ •
    httpResponse.setStatus(HttpStatus.UNAUTHORIZED.value());

    Map<String, String> errorResponse = new HashMap<>();
    errorResponse.put("errorCode", "401 UNAUTHORIZED");
    errorResponse.put("error", "๋กœ๊ทธ์ธํ•˜์ง€ ์•Š์€ ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ๋กœ๊ทธ์ธ ํ•ด์ฃผ์„ธ์š”.");

    ObjectMapper objectMapper = new ObjectMapper();
    String jsonResponse = objectMapper.writeValueAsString(errorResponse);

    httpResponse.getWriter().write(jsonResponse);

    return;
}

์ˆ˜์ • ํ›„ Postman์œผ๋กœ ๋‹ค์‹œ ์š”์ฒญ์„ ๋ณด๋ƒˆ๊ณ , ์ •์ƒ์ ์œผ๋กœ 401 ์ƒํƒœ ์ฝ”๋“œ์™€ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๊ฐ€ ๋ฐ˜ํ™˜๋˜์—ˆ๋‹ค.

๊ฒฐ๋ก 

  • Filter์™€ ๊ฐ™์€ ์ปจํŠธ๋กค๋Ÿฌ ์™ธ๋ถ€์˜ ์˜ˆ์™ธ๋Š” ์ง์ ‘ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐฐ์› ๋‹ค.
  • GlobalExceptionHandler๋Š” Controller ๋‚ด์—์„œ ๋ฐœ์ƒํ•œ ์˜ˆ์™ธ๋งŒ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ, ๊ฐ ๊ณ„์ธต๋ณ„ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์˜ ์ฐจ์ด๋ฅผ ์ดํ•ดํ•˜๊ณ  ์ ์ ˆํžˆ ๋Œ€์‘ํ•ด์•ผ ํ•œ๋‹ค.