v4 - 에러 페이지 만들기

coding S's avatar
Mar 16, 2024
v4 - 에러 페이지 만들기

1. err 패키지 생성

notion image
💡
error라고 이름 지으면 error가 예약어기 때문에 사용 불가!
 

2. error 페이지 (일단 1개만) 만들기

클라이언트가 바디의 값을 잘못 전송했을 때, 400이 터짐. ex) 영어를 적어야하는데 한글로 적어서 보냈다던지... (유효성 검사에 통과하지 못했을 때)
{{> /layout/header}} <div class="container my-3"> //my-3 -> mt mb 둘 다 주는듯? <h1>BadRequest 400</h1> <hr> <h4>{{msg}}</h4> </div> {{> /layout/footer}}

[ 잘 되는지 테스트 해볼까? ]

notion image
notion image
💡
msg가 없어서 터진다. 있어야겠죠?
notion image
💡
msg 넣어줌!
notion image
 

[ 에러 페이지 머스태치 다 만들기 ]

notion image
💡
각 상태 코드가 무엇인지 인터넷에 검색해서 기입해주자. → 차이를 알아야 함
 

[ 400.mustache ] - BadRequest

{{> /layout/header}} <div class="container my-3"> <h1>BadRequest 400</h1> <hr> <h4>{{msg}}</h4> </div> {{> /layout/footer}}
💡
이메일 주소 형식이 잘못되었거나, 필요한 길이를 충족시키지 못하는 비밀번호 등 ”유효성 검사 실패” 상태
 

[ 401.mustache ] - Unauthorized

{{> /layout/header}} <div class="container my-3"> <h1>Unauthorized 401</h1> <hr> <h4>{{msg}}</h4> </div> {{> /layout/footer}}
💡
사용자가 로그인하지 않았거나, 로그인 정보가 잘못되었을 때! "인증되지 않음" 상태
 

[ 403.mustache ] - Forbidden

{{> /layout/header}} <div class="container my-3"> <h1>Forbidden 403</h1> <hr> <h4>{{msg}}</h4> </div> {{> /layout/footer}}
💡
예를 들어, 관리자만 접근 가능한 페이지에 일반 사용자가 접근하려고 시도할 때 발생 서버가 특정 IP 주소에서 오는 요청을 차단 설정해 놓은 경우 즉, 보안 상의 이유나 다른 제약 조건으로 인해 요청을 수행할 수 없음 ”권한 없음” 상태
 

[ 404.mustache ] - NotFound

{{> /layout/header}} <div class="container my-3"> <h1>NotFound 404</h1> <hr> <h4>{{msg}}</h4> </div> {{> /layout/footer}}
💡
404는 파일, 컨트롤러 API 주소, 데이터 베이스 정보를 못찾을 때 뜬다. 주로 URL이 잘못되었거나, 요청한 페이지나 리소스가 서버에서 삭제되었거나 이동되었을 때 발생. "찾을 수 없음" 상태
 

[ 500.mustache ] - ServerError

{{> /layout/header}} <div class="container my-3"> <h1>ServerError 500</h1> <hr> <h4>{{msg}}</h4> </div> {{> /layout/footer}}
💡
500이 터지면 무조건 터진 이유에 대한 로그(기록)를 남겨야 한다! 500이 터지는 에러는 치명적!!!!!!!!! 버그!!!!!!!!!!! "내부 서버 오류" 상태 Trace ~그 추적하는 것! 그게 있어야 로그를 확인 가능! 파일, DB, API 남기는 방법은 다양하게 있다. DB에 넣어놓으면 SELECT해서 조회해서 봐야하니까, 에러 로그를 볼 수 있는 관리자 페이지를 만들어 놓는 것이 좋다! 500이 터지는 에러는 상세하게 주면 안된다. [ 알 수 없는 오류가 발생했습니다. 관리자에게 문의하세요 ] 이런 식으로. 왜 터지는지 이유까지 다 넣어버리면… 역으로 분석 당해서 탈탈탈 해킹 다 당하죠
 

+) 405 Method Not Allowed

클라이언트가 요청한 리소스에 대해 서버가 지원하지 않는 HTTP 메소드(예: GET, POST, PUT 등)를 사용했을 때 발생 특정 URL에 대해 GET 요청만 허용하는데 클라이언트가 POST 요청을 보낸 경우에 이 오류가 발생 "허용되지 않은 메소드" 상태 (@PostMapping, @DeleteMapping 이런걸 잘못 적었을 때!)
 

[ 에러 페이지를 한 개로 퉁치면 안 되나요? ]

안 돼요 ^^ DTO를 같이 쓰면 안 되는 것과 마찬가지에요

[ 그럼 에러 코드랑 핵심 로직이랑 같이 쓰면 안 되나요? ]

notion image
💡
안돼요^^ 에러를 같이 쓰게 되면 핵심 로직에 집중하기 힘들고, 보기도 힘들다. 그래서 분리시키는게 좋다.
 
Share article

codingb