본문 바로가기

study/Network

Network - Http Get, Post 차이

1. Get 메소드란
2. Post 메소드란
3. Get과 Post의 중요한 차이점

 

Get과 Post는 브라우저가 서버에 데이터를 요청할 수 있는 메서드이다.

 

1. Get 메소드란

Get은 서버에 요청을 전송할 때 요청파라미터를 Url에 쿼리스트링으로 닮아 전송한다. 기본적으로 Url 끝에 ?와 함께 키와 값을 넣어 파라미터를 전달한다. 만약, 요청 파라미터가 여러개일 경우 &로 연결하여 요청을 한다. Get 요청의 예시를 보면 아래와 같다.

 

www.exampleurl.com/user_info?name1=value1&name2=value2  

 

또한 Get요청은 불필요한 요청을 제한하기 위해 요청이 캐시될 수 있다. 이미지 같은 정적인 컨텐츠는 데이터 양이 크고 변경될 일이 적어 계속해서 동일한 요청을 할 필요가 없다. ex) 광고 배너 등 Get요청을 하고나면 브라우저에서는 요청을 캐싱해둔 뒤 동일한 요청이 발생할 때 서버로 요청을 보내가 않고 캐시된 데이터를 사용한다.

 

나의경우 거래 리스트를 Get 메소드를 통해 받아온 뒤 거래를 삭제하고 다시 거래 리스트를 조회하였을 때 캐싱된 거래 리스트를 가져와 삭제된 거래 리스트를 받지 못한 경험이 있다.

 

Get 메소드의 특징

  • Get 요청은 캐싱이 가능하다.
  • Get을 통해 서버에 요청할 때 브라우저의 캐시가 요청을 가로챈 뒤 서버에 요청을 보내는 것이 아닌 캐싱된 값을 반환한다. 캐싱처리를 할지 안할지에 대해서는 Http 헤더에 cache-control을 통해 옵션을 설정할 수 있다.
  • 요청하는 데이터의 크기 제한이 있다.(브라우저마다 다름)
  • 브라우저 히스토리에 기록이 남는다.
  • 중요한 정보를 보내면 쉽게 노출되므로 중요한 정보를 요청 파라미터로 보내면 안된다.

 

2. Post 메소드란

Post는 서버에 데이터를 생성/변경등을 하기 위해 설계된 메소드이다. 서버에 요청할 데이터를 Body에 담아서 전송한다. 요청하는 데이터의 크기에 제한이 없기때문에 대용량의 데이터 전송이 가능하다. 하지만 일정시간동안 요청에대한 결과를 받지 못한다면 TimeOut이 발생하며, TimeOut의 기준 시간은 따로 설정이 가능하다. Get메소드와 비교하자면 Post메소드는 요청 정보가 Url에 나타나지 않기 때문에 비교적 보안적인 면에서 안전하나 개발자 도구의 네트워크 등에서 확인할 수 있으므로 민감한 정보는 암호화해서 전송하는게 좋다.

 

Post 메소드의 특징

  • Post 요청은 캐싱이 되지 않는다.
  • 요청하는 데이터의 크기 제한이 없다. -> 대용량 데이터 전송 가능
  • 브라우저 히스토리에 기록이 남지 않는다.
  • 중요한 정보는 암호화해서 보내야한다.

 

3. Get과 Post의 중요한 차이점

사용목적

  • Get메소드는 서버의 데이터를 받아올 때 사용하며, Post메소드는 서버에 데이터를 생성 및 변경할 때 사용한다.

 

요청 데이터 전달

  • Get메소드의 경우 쿼리스트링 방식으로 Url에 전달하며 요청 데이터의 크기가 제한 되어있고, Post메소드는 Body에 요청 데이터를 넣어 전달하며 요청 데이터에 제한이 없다.

 

캐싱 유무

  • Get메소드의 경우 캐싱 처리가 가능하며, Post메소드는 캐싱처리가 불가능하다.