HTTP 상태 코드 및 예외처리

yongseok·2023년 1월 12일
0

Web

목록 보기
1/4

NestJS를 사용하는 중 예외 처리를 하면서, 어떤 오류를 반환하는 것이 적절한지 고민하던 중 HTTP status code를 정리한 포스팅입니다.

HTTP 상태코드

  • HTTP(Hypertext Transfer Protocol) 응답 상태 코드는 클라이언트 요청에 대한 응답으로 웹 서버에서 반환되는 3자리 숫자입니다. HTTP 요청의 결과를 나타내고 요청된 리소스의 상태에 대한 정보를 제공합니다.
    • 1xx Informational: 정보를 제공하는 응답
      • 서버가 요청을 수신했으며 계속 처리 중입니다.
    • 2xx Successful: 성공적인 응답
      • 요청이 성공적으로 수신, 이해 및 수락되었습니다.
    • 3xx Redirection: 리다이렉트
      • 리디렉션을 따르는 것과 같이 요청을 완료하려면 추가 작업이 필요합니다.
    • 4xx Client Error: 클라이언트 에러
      • 요청에 잘못된 구문이 포함되어 있거나 서버에서 처리할 수 없습니다.
    • 5xx Server Error: 서버 에러
      • 서버가 유효한 요청을 이행하지 못했습니다.

Informational 1xx

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 버전은 서버에서 지원되지 않습니다.

참고자료

0개의 댓글