본문 바로가기

TIL

[HTTP response status codes] Client error responses

 

이번에 다뤄 볼 부분은 Client error responses입니다.

이 상태 코드들은 주로 프론트엔드에서 확인해야 하는 에러 코드들입니다. 하지만, 프론트엔드 측에서만 에러를 확인해서는 안 됩니다. 서버 측에서도 적절한 에러 처리가 필요하며, 클라이언트와 서버 간의 협력이 중요합니다.

 

  • 400 Bad Request: 클라이언트의 잘못된 요청(잘못된 구문, 유효하지 않은 요청 메시지 등)으로 인해 서버가 요청을 처리할 수 없습니다.
  • 401 Unauthorized: 클라이언트가 인증되지 않았습니다. 클라이언트는 요청한 응답을 받기 위해 인증을 해야 합니다.
  • 402 Payment Required (실험적): 디지털 결제 시스템을 위해 예약된 코드이며, 거의 사용되지 않으며 표준적인 사용 방식이 없습니다.
  • 403 Forbidden: 클라이언트는 요청한 리소스에 접근할 권한이 없습니다. 서버는 요청된 리소스를 제공하지 않습니다.
  • 404 Not Found: 서버가 요청한 리소스를 찾을 수 없습니다. URL이 잘못되었거나 리소스가 존재하지 않는 경우입니다.
  • 405 Method Not Allowed: 서버가 요청을 인식하지만 해당 리소스에 대해 요청된 메서드를 지원하지 않습니다.
  • 406 Not Acceptable: 서버가 사용자 에이전트의 기준을 충족하는 콘텐츠를 찾지 못해 요청을 처리할 수 없습니다.
  • 407 Proxy Authentication Required: 프록시에서 인증이 필요합니다. 401 Unauthorized와 비슷하지만, 프록시 인증이 필요합니다.
  • 408 Request Timeout: 서버가 유휴 상태의 연결에서 아무런 요청이 없어서 연결을 닫고 싶어할 때 발생합니다.
  • 409 Conflict: 요청이 서버의 현재 상태와 충돌할 때 발생합니다.
  • 410 Gone: 요청된 리소스가 서버에서 영구적으로 삭제되었음을 나타냅니다.
  • 411 Length Required: 서버가 요청을 거부한 이유는 Content-Length 헤더 필드가 정의되지 않았기 때문입니다.
  • 412 Precondition Failed: 클라이언트가 요청 헤더에 설정한 조건을 서버가 충족하지 못했을 때 발생합니다.
  • 413 Payload Too Large: 요청 본문이 서버에서 처리할 수 있는 크기보다 큽니다.
  • 414 URI Too Long: 클라이언트가 요청한 URI가 서버가 처리할 수 있는 길이보다 길 때 발생합니다.
  • 415 Unsupported Media Type: 서버가 요청된 데이터의 미디어 형식을 지원하지 않아 요청을 거부할 때 발생합니다.
  • 416 Range Not Satisfiable: 요청에서 지정한 범위가 URI의 데이터 크기를 초과했을 때 발생합니다.
  • 417 Expectation Failed: 클라이언트가 요청한 Expect 헤더 필드를 서버가 충족하지 못할 때 발생합니다.
  • 418 I'm a teapot: 서버가 커피를 만들기 위한 요청을 거부합니다. (농담성 코드로, 실제 사용되지 않음)
  • 421 Misdirected Request: 요청이 응답을 생성할 수 없는 서버로 전송되었습니다.
  • 422 Unprocessable Content (WebDAV): 요청이 올바르게 형성되었지만, 처리할 수 없는 의미적 오류가 있을 때 발생합니다.
  • 423 Locked (WebDAV): 요청된 리소스가 잠겨있어 접근할 수 없습니다.
  • 424 Failed Dependency (WebDAV): 이전 요청의 실패로 인해 현재 요청이 처리되지 못할 때 발생합니다.
  • 425 Too Early (실험적): 서버가 요청이 재전송될 위험을 감수하고 싶지 않을 때 발생합니다.
  • 426 Upgrade Required: 서버가 현재 프로토콜로 요청을 처리할 수 없으며, 클라이언트가 다른 프로토콜로 업그레이드할 것을 요구합니다.
  • 428 Precondition Required: 서버가 요청을 처리하기 전에 조건을 충족해야 합니다. 이를 통해 업데이트 충돌 문제를 방지할 수 있습니다.
  • 429 Too Many Requests: 클라이언트가 일정 시간 내에 너무 많은 요청을 보냈을 때 발생합니다.
  • 431 Request Header Fields Too Large: 요청 헤더 필드가 너무 커서 서버가 처리할 수 없을 때 발생합니다.
  • 451 Unavailable For Legal Reasons: 사용자가 요청한 리소스가 법적으로 제공될 수 없는 경우, 예를 들어 정부의 검열로 인해 접근이 차단된 웹 페이지 요청 시 발생합니다.

 

 

자주 사용하는 상태 코드

  1. 400 Bad Request: 클라이언트가 잘못된 요청을 보냈을 때 사용됩니다. 데이터 검증 오류 등이 있을 때 유용합니다.
  2. 404 Not Found: 클라이언트가 요청한 리소스가 서버에 존재하지 않을 때 사용됩니다. 잘못된 URL이나 삭제된 리소스에 접근할 때 사용됩니다.
 	// 빌보드 아이디가 params에 있는지 확인
    if (!params.billboardId) {
      return new NextResponse("빌보드가 존재하지 않습니다.", { status: 400 });
    }
    
    // 인증된 사용자인지 확인
    if (!userId) {
      return new NextResponse("로그인이 필요합니다.", { status: 401 });
    }

 

느낀 점

400번대 에러 코드는 주로 클라이언트의 잘못된 요청으로 인해 발생하며, 클라이언트가 요청을 수정해야 함을 나타냅니다. 이러한 상태 코드는 요청의 문제를 명확히 하고, 클라이언트가 무엇을 수정해야 하는지를 알리는 데 중요합니다.