CS/네트워크

GET과 POST

Timha 2023. 2. 3. 13:43

GET

GET은 클라이언트가 서버에서 정보를 요청하기 위해 보내는 메서드

정보를 조회 할 때 대부분 사용한다.

GET은 URL 주소 끝에 파라미터로 포함되어 전송시키며 URL 뒤의 ? 뒤에 파라미터를 추가(쿼리스트링)하여 어디의 정보를 가져 올 것인지 주소를 정해준다.

www.example.com/show?name1=value1&name2=value2

name1=value1&name2=value2← 쿼리스트링

GET의 특징

  • GET 요청은 캐시를 통해서 저장되어 브라우저에서 리소스를 반환 할 수 있다.
  • GET 요청은 길이 제한이 있다.
  • GET 요청은 정보가 노출 되는 구조로 구성되어있기에 보안이 필요한 정보에 사용하지 않아야한다.
  • GET은 데이터를 요청할때만 사용 된다.

POST

클라이언트가 서버로 리소스를 생성하거나 업데이트하기 위해 데이터를 보낼 때 사용 되는 메서드

게시글 작성 및 수정에 사용된다.

POST는 전송할 데이터를 HTTP 메시지 body 부분에 담아서 서버로 보낸다.

POST 로 데이터를 전송할 때 길이 제한이 따로 없어 용량이 큰 데이터를 보낼 때 사용하거나 GET처럼 데이터가 외부적으로 드러나는건 아니라서 보안이 필요한 부분에 많이 사용된다.

( 하지만 데이터를 암호화하지 않으면 body의 데이터도 결국 볼 수 있는건 똑같다. )

POST를 통한 데이터 전송은 보통 HTML form 을 통해 서버로 전송된다.

 

post의 특징

  • POST 요청은 캐시되지 않는다.
  • POST 요청은 데이터 길이에 제한이 없다

GET과 POST의 특징만 보아도 차이가 나긴하지만 추가적으로 차이점을 정리해보면 다음과 같다.

  • 사용목적 : GET은 서버의 리소스에서 데이터를 요청할 때, POST는 서버의 리소스를 새로 생성하거나 업데이트할 때 사용한다.
  • DB로 따지면 GET은 SELECT 에 가깝고, POST는 Create 에 가깝다고 보면 된다.
  • 요청에 body 유무 : GET 은 URL 파라미터에 요청하는 데이터를 담아 보내기 때문에 HTTP 메시지에 body가 없다. POST 는 body 에 데이터를 담아 보내기 때문에 당연히 HTTP 메시지에 body가 존재한다.
  • 멱등성 (idempotent) : GET 요청은 멱등이며, POST는 멱등이 아니다.

** 멱등성이란?

반복되는 요청을 진행해도 같은 정보가 반복되는 것