HTTP 상태 코드 탐색기 — 무료 온라인 도구
모든 HTTP 상태 코드에 대한 완전한 참조입니다. 검색, 카테고리별 필터링 및 바로 사용할 수 있는 코드 스니펫을 제공합니다.
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: 예상치 못한 서버 측 에러
API 설계에서의 HTTP 상태 코드: 모범 사례
올바른 HTTP 상태 코드를 선택하는 것은 API 설계에서 가장 중요한 결정 중 하나입니다. 일관되고 정확한 상태 코드는 API를 예측 가능하게 만들고, 클라이언트 측 오류 처리를 개선하며, API와 통합하는 개발자의 디버깅 시간을 줄여줍니다.
API 개발자를 위한 상태 코드 선택 가이드
- 200 vs 201 vs 204: 성공적인 읽기와 업데이트에는 200 OK를 반환합니다. 새 리소스가 생성되면 201 Created를 사용합니다(리소스를 가리키는 Location 헤더 포함). 본문을 반환하지 않는 성공적인 삭제나 업데이트에는 204 No Content를 사용합니다.
- 400 vs 422: 잘못된 요청(유효하지 않은 JSON, 필수 필드 누락)에는 400 Bad Request를 사용합니다. 요청은 올바른 형식이지만 의미적으로 유효하지 않은 경우(이메일 형식 오류, 과거 날짜)에는 422 Unprocessable Entity를 사용합니다.
- 401 vs 403: 401 Unauthorized는 "인증되지 않음"을 의미합니다 — 클라이언트가 자격 증명을 제공해야 합니다. 403 Forbidden은 "인증되었지만 권한 없음"을 의미합니다.
- 404 vs 410: 리소스가 존재하지 않는 경우 404 Not Found를 사용합니다. 리소스가 이전에 존재했지만 영구적으로 제거된 경우 410 Gone을 사용합니다 — 검색 엔진에 URL 인덱스 해제를 알립니다.
- 429 Too Many Requests: 속도 제한 API에 필수입니다. 클라이언트에게 재시도까지 대기 시간을 알려주는 Retry-After 헤더를 항상 포함하세요.
흔한 API 상태 코드 실수
- 모든 것에 200 사용: 일부 API는 응답 본문에 오류를 포함한 200 OK를 반환합니다. 이는 표준 HTTP 오류 처리 대신 본문을 파싱하여 오류를 감지하도록 강제합니다. 항상 적절한 4xx/5xx 코드를 사용하세요.
- 클라이언트 오류에 500 반환: 500 Internal Server Error는 서버 버그를 의미합니다. 클라이언트가 잘못된 데이터를 보냈으면 4xx를 반환하세요.
- 304 Not Modified 무시: 캐시 가능한 리소스의 경우 ETag 또는 Last-Modified 헤더로 조건부 요청을 지원하고, 콘텐츠가 변경되지 않았으면 304를 반환하세요.
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 헤더를 포함하세요.
관련 개발자 도구
- CORS 에러 디버거 - Express, Nginx, Apache에서 Access-Control-Allow-Origin 에러를 디버그합니다
- JWT 디코더 및 검사기 - JWT 토큰을 디코딩하고 헤더, 페이로드, 클레임 및 만료를 검사합니다
- Docker Compose 생성기 - 서비스와 볼륨이 포함된 docker-compose.yml을 생성합니다
- AI 토큰 카운터 - GPT-4o, Claude, Gemini의 토큰을 세고 API 비용을 추정합니다
- 모든 무료 개발자 도구 보기