HTTP 프로토콜은 클라이언트와 서버 간에 데이터를 주고받기 위한 통신 규약이다. HTTP 프로토콜은 요청과 응답으로 이루어져 있으며, 요청과 응답에 사용되는 메서드를 HTTP 메서드라고 한다.
HTTP 메서드
HTTP 메서드는 클라이언트가 서버에 요청을 보낼 때 사용하는 메서드이다. HTTP 메서드는 요청의 종류에 따라 다양한 메서드가 있다.
- GET
- POST
- PUT
- PATCH
- DELETE
- HEAD
- OPTIONS
- CONNECT
- TRACE
GET
GET 메서드는 특정 리소스를 가져올 때 사용된다. 이 메서드는 서버에서 데이터를 조회하는데 사용되며, 데이터 변경 없이 요청에 대한 응답으로 리소스를 반환한다.
- 요청을 캐싱할 수 있다.
- 요청을 전송할 때 데이터를 HTTP 메시지의 body에 포함하지 않고, 쿼리스트링을 통해 전송한다.
- 주로 데이터를 조회하거나 페이지를 요청할 때 사용된다.
GET 요청은 오직 데이터를 가져올 때만 사용해야 하며, 서버의 상태를 변경하지 않아야 한다. 이를 통해 GET 요청은 안전하고 멱등성이 있다. 즉, 동일한 GET 요청을 여러 번 수행해도 동일한 결과를 반환해야 한다.
멱등성: 동일한 요청을 여러 번 수행해도 동일한 결과를 반환하는 성질
POST
POST 메서드는 서버에 데이터를 전송할 때 사용된다. 이 메서드는 주로 새로운 리소스를 생성하거나 서버에 데이터를 제출하는 데 사용된다.
- 요청을 캐싱할 수 없다.
- 요청을 전송할 때 데이터를 HTTP 메시지의 body에 포함시킨다.
- 주로 폼 데이터 제출, 파일 업로드, 데이터 처리 요청 등에 사용된다.
POST 요청은 멱등성을 보장하지 않기 때문에 동일한 요청을 여러 번 보내면 서버의 상태가 여러 번 변경될 수 있다.
PUT
PUT 메서드는 리소스를 생성하거나 수정할 때 사용된다. 이 메서드는 클라이언트가 지정한 위치에 리소스를 저장하거나, 해당 위치에 이미 존재하는 리소스를 업데이트하는 데 사용된다.
- 요청을 캐싱할 수 없다.
- 요청을 전송할 때 데이터를 HTTP 메시지의 body에 포함시킨다.
- 리소스 전체를 업데이트하거나 새로운 리소스를 생성할 때 사용된다.
PUT 요청은 멱등성이 있다. 동일한 PUT 요청을 여러 번 수행해도 동일한 결과를 얻을 수 있다. 이는 리소스의 전체 상태를 변경하기 때문에 부분적인 변경이 발생하지 않는다.
PATCH
PATCH 메서드는 리소스의 일부를 수정할 때 사용된다. 이 메서드는 기존 리소스의 일부만 변경하기 위해 사용된다.
- 요청을 캐싱할 수 없다.
- 요청을 전송할 때 데이터를 HTTP 메시지의 body에 포함시킨다.
- 리소스의 일부를 업데이트할 때 사용된다.
PUT과 PATCH의 차이점은 PUT은 리소스 전체를 수정할 때 사용하고, PATCH는 리소스의 일부를 수정할 때 사용한다는 점이다.
전체 리소스:
|
|
PATCH 요청:
|
|
위와 같은 리소스가 있을 때, PATCH 요청을 통해 age
필드만 업데이트할 수 있다.
DELETE
DELETE 메서드는 리소스를 삭제할 때 사용된다. 이 메서드는 클라이언트가 서버에서 특정 리소스를 삭제할 것을 요청하는 데 사용된다.
- 요청을 캐싱할 수 없다.
- 리소스를 삭제할 때 사용된다.
DELETE 요청은 멱등성이 있다. 동일한 DELETE 요청을 여러 번 수행해도 서버의 상태는 동일하다.
HEAD
HEAD 메서드는 GET 메서드와 동일하지만, 응답에 body가 없다. 이 메서드는 주로 리소스의 헤더 정보를 가져오기 위해 사용된다.
- 서버의 헤더 정보만 가져올 때 사용된다.
HEAD 요청은 GET 요청과 동일한 응답 헤더를 반환하지만, 응답 본문을 포함하지 않는다. 이를 통해 클라이언트는 리소스의 메타데이터를 확인할 수 있다.
OPTIONS
OPTIONS 메서드는 서버에 대한 통신 가능한 메서드를 요청한다. 이 메서드는 클라이언트가 특정 리소스에 대해 지원하는 HTTP 메서드를 확인하기 위해 사용된다.
- 서버에 대한 통신 가능한 메서드를 요청할 때 사용된다.
OPTIONS 요청은 서버가 지원하는 메서드와 기타 옵션을 반환한다. 이는 CORS(Cross-Origin Resource Sharing) 설정을 확인하는 데 유용하다.
CONNECT
CONNECT 메서드는 목적 리소스로 식별되는 서버로의 터널을 설정한다. 이 메서드는 주로 SSL(HTTPS)을 사용하는 프록시 서버를 통해 터널링을 설정하기 위해 사용된다.
- 프록시 서버를 통해 연결을 설정할 때 사용된다.
CONNECT 요청은 클라이언트와 서버 간에 TCP 터널을 설정하여 클라이언트가 프록시 서버를 통해 목적 서버에 직접 연결할 수 있도록 한다.
TRACE
TRACE 메서드는 목적 리소스로의 경로를 따라 메시지 루프백 테스트를 수행한다. 이 메서드는 클라이언트가 요청을 보내고, 서버가 요청을 받았는지 확인하기 위해 사용된다.
- 서버에 요청을 보내고, 서버가 요청을 받았는지 확인할 때 사용된다.
TRACE 요청은 클라이언트가 보낸 요청을 그대로 반환하여 중간 경로에 있는 프록시나 서버의 변조 여부를 확인할 수 있도록 한다.
요약
HTTP 메서드는 클라이언트가 서버에 요청을 보낼 때 사용하는 메서드이다. HTTP 메서드는 요청의 종류에 따라 다양한 메서드가 있으며, 각각의 메서드는 특정한 목적과 기능을 가지고 있다. GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS, CONNECT, TRACE 메서드는 HTTP 요청과 응답의 다양한 요구 사항을 충족하기 위해 사용된다.