전체 2xx 성공 3xx 리다이렉트 4xx 클라이언트 에러 5xx 서버 에러

HTTP 상태 코드란 무엇인가요?

HTTP 상태 코드는 HTTP 요청에 대한 응답으로 서버가 반환하는 세 자리 숫자입니다. 요청이 성공했는지, 추가 조치가 필요한지, 에러가 발생했는지를 클라이언트에게 알려줍니다. 상태 코드는 첫 번째 숫자를 기준으로 다섯 가지 클래스로 분류됩니다.

HTTP 상태 코드 카테고리

  • 1xx (정보): 요청이 수신되었으며 프로세스가 계속되고 있습니다.
  • 2xx (성공): 요청이 성공적으로 수신, 이해 및 수락되었습니다.
  • 3xx (리다이렉션): 요청을 완료하기 위해 클라이언트가 추가 조치를 취해야 합니다.
  • 4xx (클라이언트 에러): 요청에 잘못된 구문이 포함되어 있거나 이행할 수 없습니다. 클라이언트 측 에러입니다.
  • 5xx (서버 에러): 서버가 유효한 요청을 이행하지 못했습니다. 서버 측 에러입니다.

가장 일반적인 HTTP 상태 코드

  • 200 OK: GET, PUT, PATCH, DELETE 요청에 대한 표준 성공 응답
  • 201 Created: 리소스가 성공적으로 생성됨, 일반적으로 POST 요청
  • 301 Moved Permanently: URL이 영구적으로 변경됨 - SEO 친화적 리다이렉트에 사용
  • 400 Bad Request: 유효하지 않은 구문으로 인해 서버가 요청을 처리할 수 없음
  • 401 Unauthorized: 인증이 필요하며 실패했거나 제공되지 않음
  • 403 Forbidden: 클라이언트가 이 리소스에 접근할 권한이 없음
  • 404 Not Found: 요청한 리소스를 서버에서 찾을 수 없음
  • 429 Too Many Requests: 속도 제한 초과
  • 500 Internal Server Error: 예상치 못한 서버 측 에러

HTTP 상태 코드에 대한 자주 묻는 질문

HTTP 401과 403의 차이점은 무엇인가요?

HTTP 401 Unauthorized는 인증이 필요하지만 누락되었거나 유효하지 않음을 의미합니다 - 사용자가 로그인하지 않았거나 만료된 토큰을 제공했습니다. HTTP 403 Forbidden은 사용자가 인증되었지만 리소스에 접근할 권한이 없음을 의미합니다. 간단히 말해: 401은 "당신은 누구입니까?", 403은 "당신이 누구인지 알지만 접근 권한이 없습니다."입니다. 클라이언트에게 인증 방법을 알려주기 위해 항상 401과 함께 WWW-Authenticate 헤더를 보내세요.

200 OK 대신 201 Created를 언제 사용해야 하나요?

POST 요청이 새 리소스를 성공적으로 생성하면 201 Created를 반환하세요. 새로 생성된 리소스의 URL을 가리키는 Location 응답 헤더를 포함하세요. 새 리소스를 생성하지 않는 성공적인 GET, PUT, PATCH 요청에는 200 OK를 반환하세요. 빈 응답 본문의 성공적인 DELETE 작업에는 204 No Content를 반환하세요. 올바른 코드를 사용하면 API 클라이언트가 응답을 올바르게 처리할 수 있습니다.

HTTP 422 Unprocessable Entity란 무엇인가요?

HTTP 422는 서버가 요청 콘텐츠 유형을 이해하고 구문이 유효하지만 의미론적 지침을 처리할 수 없음을 의미합니다. 요청 본문 유효성 검사가 실패할 때 REST API에서 사용됩니다 - 필수 필드 누락, 범위를 벗어난 값, 유효하지 않은 날짜 형식 등. 잘못된 구문을 나타내는 400 Bad Request보다 더 구체적입니다. 클라이언트가 요청을 수정할 수 있도록 응답 본문에 유효성 검사 에러를 반환하세요.

500과 503 상태 코드의 차이점은 무엇인가요?

HTTP 500 Internal Server Error는 예상치 못한 문제가 발생했음을 나타내는 일반적인 서버 측 에러입니다 - 버그, 처리되지 않은 예외 또는 잘못된 설정. HTTP 503 Service Unavailable은 서버가 의도적으로 현재 요청을 처리할 수 없음을 의미하며, 일반적으로 유지보수 또는 과부하로 인해 발생합니다. 503과 함께 클라이언트에게 다시 시도할 시기를 알려주는 Retry-After 헤더를 포함하세요.

관련 개발자 도구