250x250
Notice
Recent Posts
Recent Comments
Link
«   2025/10   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

devlog_owen

240110 [TIL] nest.js 내장 예외처리 정리,HTTP 상태코드 본문

TIL

240110 [TIL] nest.js 내장 예외처리 정리,HTTP 상태코드

developer_owen 2024. 1. 11. 03:45
728x90

 

프로젝트 중 수정사항 중에 이런게 있었다. 

 

[완료]1. 이메일 발송여부와 상관없이 초대 테이블에 컬럼이 생성
[완료]2. 이미 초대되어 있을때 오류 상태 400 -> 409로 수정 필요
[완료]3. console.log 지우기

 

 

   if(existingInvitedUser) {
            throw new BadRequestException ("해당 유저는 이미 초대되었습니다.")
        }

 

먼저, 기존의 코드다. 원래는 400 error가 발생하는 코드다. 서버가 요청을 이해할 수 없다는 코드인데 적절하지 못한 오류코드였다. 

 

 if (existingUserInBoard) {
            throw new ConflictException("해당 유저는 이미 보드에 존재합니다.");
        }

 

conflictexception으로 409 error status code를 반환했다. 무턱대고 badrequestexception을 할게 아니라 상태코드를 보고 결정해야할 것같아 밑에 정리했다.

 

HTTP 상태코드

 

1xx (Informational): 요청이 수신되었고, 프로세스가 계속되는 상황을 나타냅니다.
2xx (Successful): 요청이 성공적으로 수신되었고, 이해되었으며, 수락되었음을 나타냅니다.
200 OK 요청이 성공적으로 처리되었습니다.
201 Created: 요청이 성공하였고 새로운 리소스가 생성되었습니다.
204 No Content: 요청이 성공적이었지만 응답할 콘텐츠가 없습니다.
3xx (Redirection): 클라이언트는 요청을 완료하기 위해 추가 동작을 취해야 합니다.
301 Moved Permanently: 요청한 URL이 영구적 이동되었습니다.
302 Found (Previously "Moved temporarily"): 요청한 URL이 일시적으로 변경되었습니다.
4xx (Client Error): 클라이언트가 잘못된 요청을 했음을 나타냅니다.
400 Bad Request: 서버가 요청을 이해할 수 없습니다.
401 Unauthorized: 인증이 필요한 요청입니다.
403 Forbidden: 서버가 요청을 이해했지만, 그 요청을 수행하는 것을 거부합니다.
404 Not Found: 요청한소스를 찾을 수 없습니다.

409 Conflict: 응답 상태 코드는 서버의 현재 상태와 요청이 충돌했음을 나타냅니다.
5xx (Server Error): 서버가 유효한 요청을 수행하는데 실패했음을 나타냅니다.
500 Internal Server Error: 서버에서 처리 방법을 알 수 없는 상황이 발생했습니다.
502 Bad Gateway: 서버가 게이트웨이로부터 잘못된 응답을 받았습니다.
503 Service Unavailable: 서버가 일시적으로 요청을 처리할 수 없습니다.

 


Nest.js 내장 예외처리

 

 

 

Documentation | NestJS - A progressive Node.js framework

Nest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript and combines elements of OOP (Object Oriented Programming), FP (Functional Programming), and FRP (Functional Rea

docs.nestjs.com

 

nest.js의 좋은 장점 중 하나는 내장 예외처리이다. 이걸로 간편하게 에러메시지를 던져줄 수 있다. 이번 프로젝트에서 많이 쓴 에러메시지 위주로 소개한다.

 

  • BadRequestException: 이 예외는 클라이언트의 요청이 잘못되었을 때 사용됩니다. 주로 클라이언트가 보낸 데이터의 형식이 잘못되었거나, 필요한 정보가 누락되었을 때 사용합니다. HTTP 상태 코드는 400입니다.
  • UnauthorizedException: 이 예외는 클라이언트가 인증되지 않았거나, 인증 토큰이 잘못되었을 때 사용됩니다. 이 예외가 발생하면, 클라이언트는 보통 로그인 페이지로 리다이렉트되거나, 인증정보를 다시 입력하도록 요청받습니다. HTTP 상태 코드는 401입니다.
  • NotFoundException: 이 예외는 클라이언트가 요청한 리소스를 서버에서 찾을 수 없을 때 사용됩니다. 예를 들어, 존재하지 않는 페이지에 접근하려고 할 때 이 예외가 발생합니다. HTTP 상태 코드는 404입니다.
  • ConflictException: 이 예외는 요청이 서버의 현재 상태와 충돌할 때 발생합니다. 예를 들어, 이미 존재하는 사용자의 아이디로 새로운 사용자를 생성하려고 할 때 이 예외가 발생할 수 있습니다. HTTP 상태 코드는 409입니다.
  • ForbiddenException: 이 예외는 클라이언트가 요청한 리소스에 대한 권한이 없을 때 발생합니다. 클라이언트가 인증은 되었지만, 특정 리소스에 접근할 권한이 없는 경우에 이 예외가 발생합니다. HTTP 상태 코드는 403입니다.

 

 

 

728x90