HTTP 상태 코드 사전 및 REST API 가이드

HOT

HTTP 상태 코드(100~599) 규격 검색, 원인 분석 및 REST API 상황별 권장 응답 코드 가이드

ADVERTISEMENT · TOP BANNER

Responsive 728x90 / 320x100 Ad Slot

(CLS Prevention Active · Zero Shift)
100% 브라우저 연산 (서버 전송 없음, 개인정보 안전)
Interactive Client Mode
HTTP 상태 코드 사전 & REST API 추천 가이드
검색 결과 (19)
200

OK2xx

요청이 성공적으로 처리되었음

RFC 표준 상세 정의 및 동작 방식

가장 보편적인 성공 코드로 GET 조회 결과나 일반적인 성공 응답 본문이 반환됩니다.

REST API 모범 실무 적용 사례 (Best Practice)

GET 데이터 조회, PUT 성공 후 수정 결과 반환
ADVERTISEMENT · HIGH CTR IN-FEED

Native In-Feed / High Viewability Ad Slot

(CLS Prevention Active · Zero Shift)

HTTP 상태 코드(HTTP Status Codes)와 RFC 9110 시맨틱스 표준

HTTP 상태 코드(HTTP Status Code)는 인터넷 웹 통신 프로토콜인 HTTP/1.1 및 HTTP/2, HTTP/3에서 클라이언트(웹 브라우저, 모바일 앱, 백엔드 서비스)가 전송한 요청에 대해 서버가 처리한 결과를 3자리 10진수 숫자로 응답하는 국제 표준 통신 규약(IETF RFC 9110)입니다. 첫 번째 자릿수(1~5)에 따라 전체 응답의 성격이 정보성(1xx), 성공(2xx), 리다이렉션(3xx), 클라이언트 오류(4xx), 서버 오류(5xx)의 5개 대분류로 나뉘며, 뒤따르는 2자리는 세부적인 원인과 맥락을 규정합니다.

현대 분산 클라우드 아키텍처와 RESTful API 생태계에서 올바른 HTTP 상태 코드의 선택은 서비스의 안정성과 디버깅 효율을 결정짓는 핵심 엔지니어링 척도입니다. 실무에서 가장 흔히 발생하는 안티패턴 중 하나는 서버 내부에서 예외나 오류가 발생했음에도 무조건 `200 OK`를 반환하고 본문(Body) JSON에 `{"success": false, "error": "..."}`를 담는 방식입니다. 이러한 설계는 CDN 캐시 무효화 실패, 프론트엔드 에러 바운더리 오작동, API 게이트웨이 및 모니터링 시스템의 장애 감지 누락 등 연쇄적인 결함을 초래합니다.

오르보킷 HTTP 상태 코드 조회기(HTTP Status Code Lookup)는 RFC 공식 표준에 등록된 60개 이상의 모든 상태 코드를 제공하며, 각 코드의 시맨틱 정의뿐만 아니라 실무 REST API에서의 올바른 응답 시나리오, 캐싱 가능 여부(Cacheability), 관련 필수 헤더(`Location`, `Retry-After`, `WWW-Authenticate`), 그리고 백엔드/프론트엔드 트러블슈팅 가이드를 즉시 제공합니다.

HTTP 상태 코드 5대 분류 체계 및 시맨틱 결정 공식

클라이언트 요청의 유효성, 자원의 상태 전이, 서버의 처리 능력에 따른 체계적인 코드 결정 원리입니다.

REST API 상태 코드 결정 알고리즘Mathematical Formulation
StatusCode = if (!Authorized) return 401; else if (!Forbidden) return 403; else if (!Found) return 404; else if (ServerError) return 500; else if (Created) return 201; else return 200;

인증(Authentication) ➔ 인가(Authorization) ➔ 리소스 유효성 ➔ 서버 내부 상태 ➔ 비즈니스 결과의 순서로 코드를 도출합니다.

신규 주문 생성 POST /api/orders 요청 처리 시
인증 토큰 검증헤더에 Bearer 토큰 없음 ➔ 즉시 401 Unauthorized401 반환 분기
권한 검증토큰은 유효하나 주문 권한 없음 ➔ 403 Forbidden403 반환 분기
재고 부족 검증비즈니스 제약조건 위반 ➔ 422 Unprocessable Entity422 반환 분기
주문 DB 생성 성공신규 주문 리소스 ID 생성 ➔ 201 Created + Location 헤더201 반환 성공

👉 무조건 200을 내보내지 않고 정확한 201 Created와 함께 생성된 자원 식별자를 제공합니다.

  • 1xx (조건부 정보, Informational): 요청을 수신하여 처리가 진행 중임을 알리는 임시 응답 (100 Continue, 101 Switching Protocols)
  • 2xx (성공, Successful): 클라이언트의 요청이 서버에 의해 성공적으로 수신, 이해, 수락됨 (200 OK, 201 Created, 204 No Content)
  • 3xx (리다이렉션, Redirection): 요청 완료를 위해 클라이언트가 추가적인 URL 이동이나 캐시 조치를 취해야 함 (301 Moved Permanently, 304 Not Modified)
  • 4xx (클라이언트 에러, Client Error): 잘못된 문법, 인증 누락, 존재하지 않는 URL 등 클라이언트 측 원인으로 요청 실패 (400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found)
  • 5xx (서버 에러, Server Error): 유효한 요청임에도 불구하고 서버 내부 장애나 게이트웨이 타임아웃으로 처리 실패 (500 Internal Server Error, 502 Bad Gateway, 504 Gateway Timeout)

실무 핵심 HTTP 상태 코드 비교 및 규격 요약표

상태 코드공식 명칭카테고리캐싱 가능 여부필수/권장 응답 헤더실무 적용 시점 및 핵심 가이드
200OK2xx 성공기본 캐싱 가능Content-Type일반적인 GET 조회 및 멱등한 수정 연산 성공 시
201Created2xx 성공캐싱 가능LocationPOST를 통해 신규 엔티티/자원이 서버에 새로 생성되었을 때
204No Content2xx 성공기본 불가능없음 (Body 금지)DELETE 요청이나 응답 본문을 돌려줄 필요가 없는 수정 성공 시
301Moved Permanently3xx 리다이렉트영구 캐싱 권장LocationURL 영구 변경 시 검색엔진 SEO 점수를 완전히 이전할 때
304Not Modified3xx 리다이렉트클라이언트 캐시 활용ETag, Cache-Control조건부 요청(If-None-Match) 시 변경이 없어 트래픽을 아낄 때
400Bad Request4xx 클라이언트캐싱 불가없음JSON 문법 오류, 필수 파라미터 누락 등 요청 스키마 불일치 시
401Unauthorized4xx 클라이언트캐싱 불가WWW-Authenticate인증 자격증명(로그인, API 토큰)이 없거나 유효하지 않을 때
403Forbidden4xx 클라이언트캐싱 불가없음사용자는 식별되었으나 해당 리소스에 대한 접근 권한이 없을 때
404Not Found4xx 클라이언트조건부 캐싱 가능없음요청한 엔드포인트 URL이나 특정 ID의 데이터가 존재하지 않을 때
429Too Many Requests4xx 클라이언트캐싱 불가Retry-AfterAPI 호출 속도 제한(Rate Limiting)을 초과했을 때
500Internal Server Error5xx 서버캐싱 불가없음핸들링되지 않은 런타임 NullPointer 등 서버 내부 코드 장애 발생 시
502Bad Gateway5xx 서버캐싱 불가없음Nginx 등 리버스 프록시가 업스트림 웹서버(Node, Spring) 연결 실패 시
ADVERTISEMENT · IN-ARTICLE CONTENT

High-Engagement In-Article Native Ad Slot

(CLS Prevention Active · Zero Shift)

사용 방법

11. 상태 코드 번호 또는 상황 키워드 검색

검색창에 3자리 숫자(예: 404, 502, 204)를 직접 입력하거나, '권한 없음', '게이트웨이', '캐시', '리다이렉트' 등의 키워드를 입력합니다.

22. 1xx~5xx 계열별 탭 필터링

상단의 탭을 클릭하여 성공(2xx), 클라이언트 오류(4xx), 서버 오류(5xx) 등 관심 있는 범주의 상태 코드를 모아서 탐색합니다.

33. 상세 기술 규격 및 RFC 시맨틱 분석

선택한 코드의 정확한 RFC 표준 정의, 일반적인 발생 원인, 권장 해결 방법, 캐시 정책 및 관련 HTTP 헤더를 확인합니다.

44. REST API 설계 가이드 복사 및 적용

CRUD 작업(생성 201, 삭제 204, 비동기 접수 202 등)에 적합한 응답 코드 패턴을 확인하고 개발 코드(Express, Spring, Next.js)에 적용합니다.

현업 실무에서의 HTTP 상태 코드 적용 시나리오

백엔드 API 설계부터 Nginx 웹서버 장애 진단까지 필수적인 시나리오입니다.

401 Unauthorized vs 403 Forbidden의 명확한 구분

로그인 세션이 만료되거나 토큰이 없는 경우는 401로 로그인 창 이동을 유도하고, 일반 회원이 관리자 API에 접근할 때는 403을 내려 권한 부족을 명시합니다.

REST API 리소스 생성 시 200 대신 201 Created 응답

신규 게시글이나 주문 등록 성공 시 201과 함께 `Location: /api/orders/987` 헤더를 전달하여 표준성을 극대화합니다.

Nginx 502 Bad Gateway 에러 트러블슈팅

리버스 프록시 뒤의 Node.js/Spring 백엔드 데몬이 다운되었거나 포트 바인딩이 실패했음을 식별하고 프로세스를 재기동합니다.

API 과도한 호출 차단 및 429 Too Many Requests 대응

DDoS 방어 및 요금 폭탄 방지를 위해 Redis 기반 율속 제한을 걸고 클라이언트에게 `Retry-After: 60` 헤더를 함께 응답합니다.

💡 HTTP 상태 코드 설계 전문가 팁 & 치명적 안티패턴

✓ 200 OK 안에 에러를 숨기는 안티패턴 근절

오류가 발생했을 때 HTTP 상태 코드는 200으로 두고 본문에 에러 코드를 넣으면 CDN 캐시 오작동과 모니터링 누락을 유발합니다. 반드시 4xx/5xx를 반환하세요.

✓ 204 No Content의 본문(Body) 전송 금지

204 응답에는 HTTP 표준상 어떠한 메시지 본문도 포함될 수 없습니다. 본문을 포함하면 브라우저 파서가 다음 요청과 충돌을 일으킬 수 있습니다.

✓ 301과 302 리다이렉트의 SEO 영향 구분

301은 영구 이동으로 검색엔진이 기존 페이지의 PageRank를 100% 이전하지만, 302는 임시 이동으로 검색 인덱스가 이전되지 않습니다.

✓ 멱등성(Idempotency)과 상태 코드의 조화

동일한 DELETE 요청을 여러 번 보낼 때, 첫 번째 성공은 204, 이후 이미 삭제된 상태에서는 404를 반환하거나 멱등성을 고려해 계속 204를 반환할지 팀 내 컨벤션을 통일하세요.

⚠️ 흔히 하는 실수 & 예방법

❌ 인증 실패와 권한 부족을 모두 401로 처리
✅ 비로그인은 401, 권한 부족은 403으로 엄격히 분리하여 클라이언트가 불필요한 무한 재로그인 루프에 빠지지 않게 하세요.
❌ 문법 오류에 500 에러 반환
✅ 클라이언트가 필수 필드를 누락한 것은 서버 장애가 아니므로 500이 아닌 400 Bad Request 또는 422 Unprocessable Entity를 반환해야 합니다.
❌ 404 Not Found의 무분별한 보안 노출
✅ 존재하지 않는 리소스와 권한이 없어 숨겨야 하는 리소스를 구분하지 않으면 엔드포인트 무차별 대입 공격에 힌트를 줄 수 있습니다.
❌ 504 Gateway Timeout 시 클라이언트 재시도 누락
✅ 504 에러 발생 시 결제나 주문 같은 비멱등 작업은 중복 결제 위험이 있으므로 단순 재시도 대신 트랜잭션 조회 로직을 선행하세요.

자주 묻는 질문 (FAQ)

사용자 및 전문가들이 가장 자주 묻는 핵심 질문과 명확한 해답입니다.

6 Q&As

401은 '인증(Authentication) 실패'를 의미합니다. 즉, 서버가 사용자가 누구인지 전혀 모르므로 올바른 자격증명(로그인, API 키)을 제출해야 합니다. 반면 403은 '인가(Authorization) 실패'입니다. 서버가 사용자가 누구인지는 정확히 알고 있으나, 해당 사용자가 요청한 리소스에 접근할 권한이 없음을 뜻하므로 재로그인을 해도 결과가 달라지지 않습니다.

ADVERTISEMENT · FOOTER BANNER

Wide Responsive Banner

(CLS Prevention Active · Zero Shift)