NestJS를 사용하는 중 예외 처리를 하면서, 어떤 오류를 반환하는 것이 적절한지 고민하던 중 HTTP status code를 정리한 포스팅입니다.
HTTP 상태코드
- HTTP(Hypertext Transfer Protocol) 응답 상태 코드는 클라이언트 요청에 대한 응답으로 웹 서버에서 반환되는 3자리 숫자입니다. HTTP 요청의 결과를 나타내고 요청된 리소스의 상태에 대한 정보를 제공합니다.
- 1xx Informational: 정보를 제공하는 응답
- 서버가 요청을 수신했으며 계속 처리 중입니다.
- 2xx Successful: 성공적인 응답
- 요청이 성공적으로 수신, 이해 및 수락되었습니다.
- 3xx Redirection: 리다이렉트
- 리디렉션을 따르는 것과 같이 요청을 완료하려면 추가 작업이 필요합니다.
- 4xx Client Error: 클라이언트 에러
- 요청에 잘못된 구문이 포함되어 있거나 서버에서 처리할 수 없습니다.
- 5xx Server Error: 서버 에러
100 Continue
101 Switching Protocols
Successful 2xx
200 OK
: 요청 성공
201 Created
: POST, PUT 새로운 리소스 생성
202 Accepted
: 요청 접수, 비동기(처리 중 || 처리 전) 실해할 수도 있음
Redirection 3xx
HTTP 예외처리(NestJS)
Nest는 @nestjs/common
패키지에서 표준 제공
Client Error 4xx
-
BadRequestException
- 400 잘못된 문법으로 인하여 서버가 요청을 이해할 수 없음
-
UnauthorizedException
- 401 "비인증(unauthenticated)"을 의미
-
NotFoundException
- 404 서버는 요청받은 리소스를 찾을 수 없음
-
ForbiddenException
- 403 "미승인(unauthorized)" 클라이언트는 콘텐츠에 접근할 권리를 가지고 있지 않음
-
NotAcceptableException
- 406 Content negotiation 결과중 허용되지 않음
-
RequestTimeoutException
- 408 이 응답은 요청을 한지 시간이 오래된 연결에 일부 서버가 전송하며, 어떨 때에는 이전에 클라이언트로부터 어떠한 요청이 없었다고 하더라도 보내지기도 합니다. 이것은 서버가 사용되지 않는 연결을 끊고 싶어한다는 것을 의미합니다.
-
ConflictException
- 409 Conflict
- 서버의 현재 상태와 요청이 충돌했음을 나타낸다.
-
GoneException
- 410 Gone
- 이 응답은 요청한 콘텐츠가 서버에서 영구적으로 삭제되었으며, 전달해 줄 수 있는 주소 역시 존재하지 않을 때 보냅니다.
-
PayloadTooLargeException
- 413
- 요청 엔터티가 서버에 의해 정의된 제한보다 크다는 것을 나타낸다.
-
UnsupportedMediaTypeException
- 415 클라이언트가 보낸 페이로드(미디어 포맷)가 지원하지 않는 형식이기 때문에 서버가 요청을 수락하지 않음을 나타냅니다.
-
UnprocessableEntityException
- 422 처리할 수 없는 콘텐츠
- 요청은(콘텐츠 유형, 구문/문법) 잘 만들어졌지만은 처리할 수 없습니다.
-
ImATeapotException
- 418 서버가 찻주전자이기 때문에 커피 내리기를 거절했다는 것을 의미합니다. (만우절 농담: Hyper Text Coffee Pot Control Protocol)
-
MethodNotAllowedException
- 405 요청한 메소드는 서버에서 알고 있지만, 제거되었고 사용할 수 없습니다.
-
PreconditionFailedException
- 412 클라이언트의 헤더에 있는 전제조건은 서버의 전제조건에 적절하지 않습니다.
Server Error 5xx
-
InternalServerErrorException
- 500 서버가 처리 방법을 모르는 상황이 발생했습니다. 서버는 아직 처리 방법을 알 수 없습니다.
-
NotImplementedException
- 501 서버가 요청 방법을 이해하지 못하거나나 어떤 리소스를 지원하지 않은 경우에 적절합니다.
-
BadGatewayException
- 502 이 오류 응답은 서버가 요청을 처리하는 데 필요한 응답을 얻기 위해 게이트웨이로 작업하는 동안 잘못된 응답을 수신했음을 의미합니다.
-
ServiceUnavailableException
- 503 서버가 요청을 처리할 준비가 되지 않았습니다. 일반적인 원인은 유지보수를 위해 작동이 중단되거나 과부하가 걸렸을 때 입니다.
-
GatewayTimeoutException
- 504 이 오류 응답은 서버가 게이트웨이 역할을 하고 있으며 적시에 응답을 받을 수 없을 때 주어집니다.
-
HttpVersionNotSupportedException
- 505 HTTP Version Not Supported
- 요청에 사용된 HTTP 버전은 서버에서 지원되지 않습니다.
참고자료