HTTP의 Method 방식 비교
🐰 HTTP(Hyper Text Transfer Protocol)란,
클라이언트-서버 프로토콜
로 HTML문서와 같은 리소스(데이터)를 가져올 수 있도록 해주는 역할을 합니다.
클라이언트-서버 프로토콜
이란 (보통 웹브라우저인) 수신자 측에 의해 요청이 초기화되는 프로토콜을 의미합니다.
- TCP/IP의 Application 최상위 계층에서 네트워크 서비스 자체를 제공합니다.
웰 노운 포트(well-known)
인 80번 포트를 사용하여 통신합니다.
웰 노운 포트(well-known)
는 65,536개의 포트 번호 중 1~1023번 포트를 말합니다. (1024~49151 - 등록된 포트, 49152~65535 : 송신측 어플리케이션이 임의로 선택 가능한 포트)
- 첫번째 표준은 HTTP/1.1이고 이후로 HTTP/2 및 HTTP/3가 등장하였습니다.
🐰🐰 HTTP Method
클라이언트가 서버로 보내는 요청의 방법을 나타내며 주어진 리소스에 수행하길 원하는 행동을 나타냅니다.
Method 종류
- GET : 서버에게 조회할 리소스를 요청한다. (READ, 조회)
- POST : 서버에게 본문(body)에 생성할 데이터를 삽입하여 전송한다. (CREATE, 생성)
- PUT : 서버에게 본문에 수정할 데이터를 삽입하여 전송한다. (UPDATE, 수정)
- DELETE : 서버에게 삭제할 리소스를 요청한다. (DELETE, 삭제)
- PATCH : PUT과 비슷하지만 일부만 수정한다는 점에서 다르다.
그외에도 HEAD, CONNECT, OPTION 이 있습니다.
이 중 GET
, POST
메소드에 대해 더 알아보겠습니다.
GET 방식 vs POST 방식
- GET 방식
- 서버에서 SELECT, READ 역할을 합니다. 그러므로 서버의 값이나 상태를 변경하기 않습니다.
- GET 요청은 요청 내용을 Body에 담지 않고, HTTP request message의 Header 부분 url에
쿼리스트링
으로 전달합니다.
- url의 길이의 제한이 있기 때문에, GET 요청의 길이에도 한계가 존재합니다.
- GET 방식은 url에 정보가 노출되기 때문에, password와 같은 정보는 GET 방식으로 서버에 전달해서는 안됩니다.
- GET 방식은 Cacheing이 가능해, 한 번 정적 문서들을 요청하면 동일한 요청이 들어왔을 때 서버에 추가적으로 요청하지 않고 Caching 해놓은 것을 사용합니다. 따라서, 동일한 요청에 매번 같은 응답을 보냅니다.
- 동일한 요청을 한 번 보내는 것과 여러 번 연속으로 보내는 것이 같은 효과를 지니고, 서버의 상태도 동일하게 남을 때, 해당 HTTP 메서드가
멱등성
을 가졌다고 말합니다. => 따라서 GET은 멱등성
을 가집니다.
- POST 방식
- 서버에서 CREATE 역할을 수행합니다. 보통 서버의 상태를 변경하거나 값을 추가하고자 할때 사용합니다.
- POST 요청은 HTTP request message의 Body 부분에 전달되기 때문에 길이 제한 없이 정보를 보낼 수 있습니다.
- 보안면에서 GET보다는 낫지만, 개발자 도구에 의해서 노출되기 쉽기 때문에 암호화해서 전송해야 합니다.
- POST 방식은
멱등성
을 가지지 않기 때문에, 서버에 요청할때마다 응답이 항상 다를 수 있습니다.
Reference