본문 바로가기

Advanced Keywords

HTTP 요청 메서드

HTTP 요청 메서드에 대한 이해

Express.js를 사용할 때, Router()와 함께 사용하는 HTTP 요청 메서드(get, post, put, delete 등)에 대한 개념이 모호하다고 느꼈다.
이러한 메서드는 웹 애플리케이션이 서버와 통신할 때 중요한 역할을 하며, 각 메서드는 특정 작업을 수행하기 위해 사용된다.
이번 글에서는 HTTP 요청 메서드의 의미와 특성에 대해 알아보겠다.


HTTP 요청 메서드

HTTP 요청 메서드는 웹 애플리케이션에서 클라이언트가 서버에 리소스에 대해 수행할 작업을 지시하는 명령어다.
각 메서드는 고유의 특성(안전성, 멱등성, 캐시 가능성)을 가진다.

HTTP 요청 메서드의 특성

안전성(Safe)

안전한 메서드는 서버의 상태를 변경하지 않으며, ‘읽기 전용’ 작업만 수행한다.
하지만 이 메서드가 잠재적 위협이나 부수 효과를 완전히 막는 것은 아니다.
중요한 점은, 클라이언트는 추가적인 동작을 요청하지 않았으며 그에 따른 책임이 없다는 것이다.

멱등성(Idempotent)

멱등성은 서버에 같은 요청을 여러 번 보내더라도 결과가 동일함을 의미한다.
모든 안전한 메서드는 멱등성을 가지며, 이로 인해 클라이언트는 중복된 요청을 보내더라도 서버의 상태가 변하지 않음을 보장받을 수 있다.

캐시 가능성(Cacheable)

캐시 가능한 메서드는 서버의 응답을 저장하고 나중에 다시 사용할 수 있다.
이는 서버에 새로운 요청을 보내지 않고도 동일한 응답을 가져올 수 있도록 하여 성능을 향상시킨다.


GET

GET 메서드는 서버에서 특정 리소스를 요청할 때 사용된다.
주로 데이터를 조회하는 데 사용되며, 서버의 상태를 변경하지 않는다.

  • 특징: 리소스를 조회하기 위한 메서드로, 데이터를 변경하지 않음.
  • 사용 예: 블로그 게시물 조회, 사용자 프로필 보기, 상품 목록 검색 등.

POST

POST 메서드는 클라이언트가 서버에 데이터를 전송할 때 사용된다.
이는 서버의 상태를 변경하거나 새로운 리소스를 생성할 때 자주 사용된다.

  • 특징: 데이터를 서버로 보내어 리소스를 생성하거나 서버의 상태를 변경함.
  • 사용 예: 사용자 등록, 상품 주문, 파일 업로드 등.

PUT

PUT 메서드는 서버에 특정 리소스를 생성하거나 기존 리소스를 완전히 대체할 때 사용된다.
멱등성을 가지므로 동일한 요청을 여러 번 보내도 결과는 동일하다.

  • 특징: 전체 리소스를 대체하거나 새로 생성하며, 멱등성을 가짐.
  • 사용 예: 사용자 프로필 업데이트, 상품 정보 수정 등.

DELETE

DELETE 메서드는 특정 리소스를 삭제하는 데 사용된다.
이 메서드는 서버의 상태를 변경하며, 멱등성을 가진다.

  • 특징: 리소스를 삭제하며, 멱등성을 가짐.
  • 사용 예: 사용자 계정 삭제, 게시물 삭제 등.

CONNECT

CONNECT 메서드는 클라이언트와 서버 간의 터널을 설정할 때 사용된다.
주로 SSL을 이용한 보안 연결을 설정할 때 사용되며, 요청이 중간 프록시 서버를 통해 전달될 수 있다.
메서드는 중간 프록시 서버가 요청을 전달할 때, 각 서버 간 터널을 연결해준다.
연결이 설정되면 그 이후에는 데이터가 양방향으로 무조건 전달된다.

  • 특징: 클라이언트와 서버 간 보안 연결을 위한 터널링을 설정함.
  • 사용 예: HTTPS 연결을 설정하는 데 사용됨.

OPTIONS

OPTIONS 메서드는 서버에서 특정 리소스에 대해 허용된 메서드를 확인하는 데 사용된다.
주로 CORS 요청에서 서버가 어떤 메서드를 지원하는지 확인하는데 유용하다.

  • 특징: 서버가 허용하는 메서드를 조회하며, 상태를 변경하지 않음.
  • 사용 예: CORS 요청 사전 검증, 서버에서 제공하는 메서드 확인.

PATCH

PATCH 메서드는 리소스의 일부분만 수정할 때 사용된다.
PUT과 달리 전체 리소스를 대체하지 않고, 특정 부분만 수정한다.
PATCH는 멱등성을 보장하지 않기 때문에, 동일한 PATCH 요청을 여러 번 보낼 경우 결과가 달라질 수 있다.

  • 특징: 리소스의 일부만 수정하며, 멱등성을 가지지 않음.
  • 사용 예: 프로필의 특정 필드만 수정, 게시물의 특정 내용만 변경

HTTP 요청 메서드 비교표

메서드 안전성 멱등성 캐시 가능성 본문 요청 포함 본문 성공 응답 포함 HTML 폼 사용 가능
GET O O O X O O
HEAD O O O X X O
POST X X 조건부 O O O
PUT X O X O X X
DELETE X O X 선택 사항 선택 사항 X
CONNECT X X X X X X
OPTIONS O O X X 선택 사항 X
TRACE O O X X O X
PATCH X X 조건부 O 선택 사항 X

* POST와 PATCH는 응답에 명시적으로 유효성(freshness) 정보와 일치하는 Content-Location 헤더가 포함된 경우 캐시 가능하다.

결론

각 HTTP 요청 메서드는 클라이언트와 서버 간의 다양한 통신 동작을 정의하는 데 중요한 역할을 한다.
메서드의 안전성, 멱등성, 캐시 가능성을 이해하면 웹 애플리케이션을 설계하고 개발할 때 보다 효율적으로 서버와 통신할 수 있다.


 

HTTP request methods - HTTP | MDN

HTTP defines a set of request methods to indicate the desired action to be performed for a given resource. Although they can also be nouns, these request methods are sometimes referred to as HTTP verbs. Each of them implements a different semantic, but som

developer.mozilla.org

 

RFC9110

HTTP Semantics

httpwg.org

 

RFC9110

HTTP Semantics

httpwg.org

 

RFC 9111: HTTP Caching

Applications using HTTP often specify additional forms of caching. For example, Web browsers often have history mechanisms such as "Back" buttons that can be used to redisplay a representation retrieved earlier in a session.¶ Likewise, some Web browsers i

www.rfc-editor.org