본문 바로가기
Python/크롤링&스크래핑

[웹스크래핑] HTTP Method - Get vs. Post

by 리미와감자 2023. 1. 18.

HTTP Method

HTTP Method는 크게 Get 방식과 Post 방식이 있다.

 

*HTTP : 웹상에서 클라이언트와 서버 간에 Request(요청)/Response(응답)으로 데이터를 주고 받을 수 있는 프로토콜

 

 


Get 방식과 Post 방식의 차이

 

Get

서버로 어떠한 리소스로 부터 정보를 얻기(Get)위해 사용하는 방식

 

Get은 데이터를 읽을 때만 사용하고 데이터를 수정하지 않는다.

어떠한 정보를 누구나 볼 수 있게 url에 적어서 보내는 방식이다.

url에 적어서 보낼때 쿼리스트링(QueryString)을 사용한다.

Get은 한번 전송할 때, 보낼 수 있는 데이터 양이 정해져있어서 많은 양의 데이터를 보내지 못한다.

 

쿼리스트링(QueryString)

www.example-url.com/resources?name1=value1&name2=value2

위와 같은 구조를 갖는다.

'변수1=값&변수2=값&...' 이 반복된다.

변수들 사이의 연결은 '&'를 사용한다.

 

ex) 쿠팡 url
https://www.coupang.com/np/search?minPrice=1000&maxPrice=100000&page=1
최소값 = 1000
최대값 = 100000
페이지 = 1

 

이러한 데이터들은 숨겨져야하는 데이터가 아니기 때문에 누가봐도 상관이 없다.

 

특징

  • 캐시될 수 있음 : HTTP 헤더에서 cache-control 헤더를 통해 캐시 옵션을 지정할 수 있음.
  • 브라우저 기록에 남음
  • 북마크에 추가할 수 있음
  • 데이터 길이에 제한이 있음 : 브라우저마다 다름
  • 민감한 데이터를 보내면 안됨
  • idempotent : 동일한 요청에 응답이 항상 같음. 따라서, 조회할 때 많이 사용(조회).

 

*캐싱 : 한번 접근한 후 또 요청할 때, 레지스터에 데이터를 저장시켜 놓아서 빠르게 접근하는 것.


 

Post

서버에 데이터를 보내서 리소스를 생성하고 업데이트하기 위해 사용하는 방식

 

전송해야할 데이터를 HTTP 메시지의 Body에 실어서 전송한다.

파일 업로드를 할 수 있고, 게시판에 글을 쓸 수 있다. 암호화가 된 개인정보를 보낼 수도 있다.

Get보다는 안전하지만, 개발자 도구와 같은 툴로 내용을 확인할 수 있기 때문에 반드시 암호화가 필요하다.

 

특징

  • 캐시되지 않음
  • 브라우저 기록에 남지 않음
  • 북마크에 추가할 수 없음
  • 데이터 길이의 제한이 없음
  • not idempotent : 동일한 요청에 응답이 달라질 수 있음. 서버의 상태나 데이터를 변경할 때 주로 사용(수행).

Get과 Post의 차이점

 

사용목적 : GET은 서버의 리소스에서 데이터를 요청할 때, POST는 서버의 리소스를 생성하거나 업데이트 할 때 사용

보내는 방식 : GET은 url에 쿼리스트링을 담아서 전송, POST는 HTTP 메세지의 Body에 담아서 전송

Idempotent : Get is idempotent, Post is not idempotent

 

 

참고

https://opentechlabs.blogspot.com/2014/10/difference-between-post-get.html

https://velog.io/@songyouhyun/Get%EA%B3%BC-Post%EC%9D%98-%EC%B0%A8%EC%9D%B4%EB%A5%BC-%EC%95%84%EC%8B%9C%EB%82%98%EC%9A%94

https://noahlogs.tistory.com/35

댓글