HTTP

[HTTP 완전 정복 시리즈] 5편 - HTTP 메서드와 상태코드 제대로 이해하기

dev-nadan 2025. 7. 22. 16:40

HTTP는 단순한 요청-응답 기반의 통신 프로토콜이지만,
메서드와 상태코드를 이해하는 것만으로도 API 설계와 디버깅이 훨씬 쉬워진다.
이번 포스팅에서는 HTTP의 핵심 메서드들상태코드 체계에 대해 정리해본다.


HTTP 메서드란?

HTTP 메서드는 클라이언트가 서버에 어떤 작업을 요청할지 지정하는 방법이다.
대표적인 메서드는 아래와 같다.

메서드설명
GET 리소스를 조회 (서버 상태 변경 없음)
POST 리소스를 생성하거나 서버 처리 요청
PUT 리소스를 전체 수정 또는 생성
PATCH 리소스의 일부만 수정
DELETE 리소스 삭제
HEAD 헤더만 조회 (본문 제외)
OPTIONS 서버가 지원하는 메서드 확인 (주로 CORS에서 사용)
 

이 중 GET과 HEAD는 서버의 상태를 바꾸지 않기 때문에 안전한(Safe) 메서드로 분류된다.


메서드 속성

  • 안전(Safe): 서버 상태를 변경하지 않음 (GET, HEAD)
  • 멱등(Idempotent): 같은 요청을 여러 번 보내도 결과가 같음 (GET, PUT, DELETE)
  • 캐시 가능(Cacheable): 클라이언트가 캐싱 가능 (주로 GET)

예를 들어 POST는 두 번 요청하면 중복 데이터가 생길 수 있으므로 멱등하지 않다.


메서드 활용 방식

HTTP 메서드를 활용해 API를 설계할 때는 크게 두 가지 방식이 있다.

1. POST 기반 - 컬렉션(Collection) 스타일

  • 클라이언트는 리소스 URI를 모름
  • 서버가 URI를 생성하고 리소스를 저장
  • 예: /members에 POST 요청 → 서버가 /members/1을 생성

2. PUT 기반 - 스토어(Store) 스타일

  • 클라이언트가 리소스 URI를 알고 관리
  • 예: /files/hello.txt에 PUT 요청 → 해당 경로에 파일 저장

실무에서는 대부분 POST 기반을 사용하고, 파일 업로드 등 특수한 경우에만 PUT을 사용한다.


HTML Form 제약과 컨트롤 URI

HTML 폼(form)은 기본적으로 GETPOST 메서드만 지원한다.
따라서 DELETE나 PATCH를 쓰기 어려울 때는
/users/delete 같은 컨트롤 URI 형태를 사용하는 경우가 많다.
이는 RESTful하지 않지만 현실적으로 자주 쓰인다.


HTTP 상태코드란?

HTTP 상태코드는 서버가 요청에 대해 어떤 결과를 반환했는지를 숫자로 알려주는 것이다.

상태코드의미
1xx 처리 중 (거의 사용되지 않음)
2xx 성공
3xx 리다이렉션
4xx 클라이언트 오류
5xx 서버 오류
 

 


주요 상태코드 요약

2xx: 성공

  • 200 OK: 요청 성공
  • 201 Created: 자원 생성됨 (POST 응답)
  • 204 No Content: 응답 본문 없음 (예: 저장 후 빈 응답)

3xx: 리다이렉션

  • 301 Moved Permanently: 영구 이동
  • 302 Found: 임시 이동 (대부분 GET으로 바뀜)
  • 303 See Other: POST 이후 GET으로 리다이렉션
  • 307 Temporary Redirect: 메서드 그대로 유지
  • 304 Not Modified: 캐시 재사용 가능

→ 특히 POST-Redirect-GET(PRG) 패턴에 유용함
→ 예: POST → 303 리다이렉트 → 결과 페이지는 GET

4xx: 클라이언트 오류

  • 400 Bad Request: 문법 오류
  • 401 Unauthorized: 인증 필요 (로그인 안 됨)
  • 403 Forbidden: 권한 없음
  • 404 Not Found: 리소스 없음

5xx: 서버 오류

  • 500 Internal Server Error: 서버 내부 오류
  • 503 Service Unavailable: 일시적 서버 중단

상태코드 구분 기준

구분설명
4xx 클라이언트 잘못 (요청 수정 필요)
5xx 서버 문제 (복구 후 재시도 가능)
 

즉, 4xx는 클라이언트가 요청을 고쳐야 하며,
5xx는 서버가 고쳐야 한다는 점에서 다르다.


요약

  • HTTP 메서드는 리소스에 대한 행위를 표현한다.
  • 메서드에는 안전성, 멱등성, 캐시 가능 여부와 같은 속성이 있다.
  • API 설계 시 컬렉션(POST)스토어(PUT) 스타일을 구분해 사용할 수 있다.
  • 상태코드는 2xx/3xx/4xx/5xx 등 계열별로 의미가 다르며, 디버깅 시 핵심 지표가 된다.