Network

[Network] HTTP 메서드, 상태코드란?

hej090224 2025. 7. 14. 18:17

HTTP 메서드

HTTP 메서드는 웹에서 클라이언트가 서버에게 무엇을 해달라고 요청하는지를 나타내는 방식 입니다.

조금 더 자세하게 설명하자면, 클라이언트 - 서버 구조에서 요청(Request)과 응답(Response)이 이루어지는 방식을 의미합니다.

서버가 수행해야 할 동작을 지정해서 요청을 보내는 방법 정도로 정리 할 수 있겠습니다.

 

그렇다면 왜 HTTP 메서드를 사용할까요? 그 이유는 자원과 내가 하려는 동작을 분리하기 위함입니다.

HTTP 메서드를 통해 서버가 수행해야 할 동작을 지정하게 되면 URI는 리소스만 식별하면 되기 때문입니다.

 

HTTP 메서드의 종류는 총 8가지 입니다. 우리는 보통 그중에서 GET, PUT, POST, DELETE 등 4~5가지를 주로 사용합니다.

 

1. GET

서버에 있는 자원(데이터)를 읽어오기 위한 메서드 입니다.

클라이언트가 요청하면 서버는 해당 데이터를 응답으로 전달하게 됩니다.

 

특징

- 데이터를 변경하지 않음

- 데이터를 body에 담을 수 없고 URL에 쿼리스트링으로 파라미터 전달이 가능 

- 브라우저에서 주소창에 입력 가능

- 캐싱이 가능하여 빠르게 동작 할 수 있음

- 멱등성이 있음

 

즉 한마디로 "나 이 데이터 줘"하는 메서드 입니다.

 

2. POST

클라이언트가 서버에 새로운 데이터를 추가하려고 할 때 사용하는 메서드 입니다.

 

특징

- Body에 데이터를 쿼리 파라미터 형식으로 담아서 전송

- 서버는 요청을 받아서 데이터를 생성

- 동일한 요청을 여러번 보내면 중복 생성 될 수 있음

- 멱등성이 없음

 

즉 한마디로 "나 이 데이터 추가할래"하는 메서드 입니다.

 

3. PUT

자원 전체를 수정하거나 새로 만들 때 사용하는 메서드 입니다.

 

특징 

- 클라이언트가 보내는 데이터로 기존 리소스를 완전히 대체

- 없으면 새로 만들기도 함

- 부분 수정이 불가

- 멱등성이 있음

 

즉 "나 이 데이터 이걸로 덮어씌울래"하는 메서드 입니다.

 

3-1. PATCH

자원을 일부분만 수정 할 때 사용하는 메서드 입니다.

 

특징

- 보통 PUT 메서드보다 데이터 양이 적고 목적이 명확합니다.

- 멱등성이 있음

 

즉 "여기만 바꿀래"하는 메서드 입니다.

 

4. DELETE

서버에 있는 리소스를 삭제할 때 사용하는 메서드 입니다.

 

특징

- 서버에 해당 리소스를 없애달라고 요청

- 멱등성이 있음

 

즉 "이거 지울래"하는 메서드 입니다.

 

HTTP 메서드는 클라이언트가 서버에게 어떤 동작을 명확히 지정해주는 수단입니다.

웹 통신에서 가장 기초적이고 핵심적인 개념이라고 말 할 수 있습니다.

클라이언트가 어떤 요청을 보낼 때 그냥 URL로만 지정하는 것이 아니라

그 URL에 대해 어떤 작업을 하기를 원하는지를 HTTP 메서드를 통해 함께 전달하게 됩니다.

이를 통해서 서버는 클라이언트가 원하는 동작이 데이터를 조회하려는 것인지,

새로 생성하려는 것인지 등등을 정확하게 알고 처리 할 수 있습니다.

 

위에 설명한 것처럼 HTTP 메서드는 각각의 목적에 따라 하는 역할이 명확하게 나뉘게 되고

RESTful API 설계에서 메서드에 따라 의미있는 요청 구조를 설계 할 수 있게 해줍니다.

 

즉 HTTP 메서드는 단순한 요청 방식일 뿐만 아니라,

웹 애플리케이션의 동작의미를 명확히 전달하고 설계의 표준을 정립하는 중요한 요소라고 할 수 있습니다.

 

_______모르는 단어 정리_______

멱등성 (Idempotency): 같은 요청을 여러 번 보내도 결과가 같음을 의미합니다.

 

쿼리스트링 (Query String): URL에 붙는 추가 정보로, ? 뒤에 키=값 형식으로 나타납니다.
예) https://example.com/search?keyword=apple&sort=price

 

파라미터 (Parameter): 서버에 전달하는 값(데이터)으로, 다양한 방식으로 보낼 수 있습니다.

 

HTTP의 상태코드

HTTP 메서드를 사용 한 후에는 그 결과를 알려주기 위해 상태코드를 알려주게 됩니다.

상태 코드에는 다양한 종류가 있는데, 보통 다섯가지 그룹(100 ~ 599)으로 나누어지게 됩니다.

 

1XX (정보)

  • 100 (continue) - 클라이언트가 요청을 계속해도 됨
  • 101 (Switching Protocols) - 서버가 프로토콜을 바꿈
  • 102 (Processing) - 요청은 처리 중 (멀티 요청 처리 시 사용)
  • 103 (Early Hints) - 브라우저가 자원을 미리 preload 할 수 있게 함

대부분 직접 구현하지 않고 브라우저나 프록시 레벨에서 쓰입니다.

요청을 받았고, 계속 처리 중임을 알려주는 정보성 응답입니다.

2XX (성공)

  • 200 (OK) - 일반적인 성공
  • 201 (Created) - 리소스가 성공적으로 생성됨
  • 204 (No Content) - 성공했지만 응답 본문 없음
  • 206 (Partial Content) - 범위 지정 응답

요청이 성공적으로 처리됨을 나타내는 정상 응답

 

3XX (리다이렉션)

  • 301 (Moved Permanently) - 리소스가 영구적으로 이동됨
  • 302 (Found) - 임시 리다이렉션
  • 303 (See Other) - 리소스를 다른 URL에서 GET으로 요청하라고 명시
  • 304 (Modified) - 캐시된 데이터가 최신이므로 재전송 불필요

리다이렉션이란 클라이언트가 요청한 URL이 변경되어, 다른 URL로 자동 이동하도록 서버가 응답하는 것 이고

이 상태 코드는 리소스 위치가 바뀌었으니 다른 URL로 이동하라는 리다이렉션 응답입니다.

API에서는 잘 안 쓰지만, 웹사이트 전환/SEO/브라우저 캐시 최적화에 매우 중요합니다.

4XX (클라이언트 오류)

  • 400 (Bad Request) - 잘못된 요청 (형식 오류, 파라미터 누락 등)
  • 401 (Unauthorized) - 인증되지 않음
  • 403 (Forbidden) - 권한 없음
  • 404 (Not Found) - 리소스를 찾을 수 없음

 

클라이언트의 요청에 문제가 있음을 나타내는 오류 응답입니다.

이 그룹은 프론트엔드와 API 설계에서 가장 중요하게 다루게 됩니다.

5XX (서버 오류)

  • 500 (Internal Server Error) - 서버 내부 코드 오류
  • 502 (Bad Gateway) - 서버가 외부 시스템(API)에서 잘못된 응답을 받음
  • 503 (Service Unavailable) - 서버 과부하, 유지보수 등으로 일시 중단
  • 504 (Gateway Timeout) - 서버가 외부 시스템 응답을 너무 오래 기다림

서버 내부의 문제로 요청 처리 실패를 나타내는 서버 오류 응답입니다.

클라이언트가 고칠 수 없는 문제이기 때문에 백엔드에서 로그/에러 모니터링 필수입니다.

 

HTTP의 상태코드는 웹 통신에서 클라이언트와 서버가 요청, 응답을 주고받을 때,

그 결과를 명확하게 나타내어 주는 중요한 수단입니다. 서버는 이 상태코드를 통해

성공했는지, 실패했는지, 혹은 추가적인 조치가 필요한지에 대해 숫자로 전달하게 되고

클라이언트는 이를 바탕으로 적절한 동작을 취할 수 있습니다.

이러한 상태 코드는 디버깅이나 에러 처리 과정에서 문제의 원인을 신속히 파악하는 데 도움이 되며

클라이언트의 인증 및 권한 검증에도 중요한 역할을 하게 됩니다.

특히 RESTfful API 설계에서는 HTTP 메서드의 상태 코드의 조합을 통해  동작을 명확히 정의하므로

상태 코드는 API 설계의 핵심 요소라고 할 수 있습니다.

 

_______모르는 단어 정리_______

리다이렉션 (Redirection): 클라이언트가 요청한 URL이 변경되어 다른 URL로 자동 이동하도록 서버가 응답하는 것

쉽게 말하면 "여기 주소 이제 아니니까 저 주소로 가세요!"하면서 서버가 클라이언트에게 새로운 주소를 알려주는 것 입니다.

 

프리로드 (Preload): 웹 페이지가 본격적으로 렌더링되기 전에, 미리 필요한 리소스(CSS, JS, 이미지 등)를 브라우저가

준비하도록 힌트를 주는 기능

쉽게 말하자면 "이거 곧 쓸 거니까 미리 받아놔!"하는 기능 입니다.

 

 

이상으로 블로그를 마치겠습니다. 읽어주셔서 감사합니다.