devlog_owen
240110 [TIL] nest.js 내장 예외처리 정리,HTTP 상태코드 본문
프로젝트 중 수정사항 중에 이런게 있었다.
[완료]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입니다.
'TIL' 카테고리의 다른 글
[TIL][기술면접준비] 1. NoSQL과 RDBMS의 특징과 차이점에 대해서 장, 단점을 들어 설명해주세요 (1) | 2024.01.13 |
---|---|
[TIL] Redis란? Redis와 MySQL의 차이, Redis 설치 (1) | 2024.01.12 |
240108 [TIL] inlay hints, prettier 설정, vs code 색상설정 (1) | 2024.01.10 |
240109 [TIL] nest.js mailer 사용하기 (0) | 2024.01.10 |
240105 [TIL] 팀프로젝트 트렐로(Trello) 클론코딩 1일차 (0) | 2024.01.06 |