보통 get은 정보를 가져오는 method, post는 정보를 불러오기 위한 method라고 정의한다.
처음에는 몰랐지만 학습을 한 이후에는 get과 post 사이에는 아주 큰 차이가 있다는 것을 깨닫게 되었다.
get는 주로 정보를 가져오는 용도로 쓰게 되는 이유는 크게 3가지다.
1. 캐시가 된다.
한번 불러온 페이지에 대한 정보는 다시 리소스를 요청하여 내려받는 대신에 해당 정보를 복사헤서 복사본을 불러오게 된다. 따라서 정보를 불러올 때 들이는 시간을 아낄 수 있다.
2. get으로 보낼 수 있는 용량는 한정적이다.
get의 request는 브라우저마다 다르지만 무한정으로 보낼 수 없다. 그래서 많은 정보를 담아서 보내지 못한다.
3. get은 parameter가 노출이 된다.
get에 정보를 담으면 안되는 가장 큰 이유로 get은 요청시에 정보가 노출이 된다. 중요한 정보를 담으면 당연히 누군가가 볼 가능성이 있으므로 정보를 보내는 method로는 위험하다.
크게 이러한 이유로 get은 주로 정보를 요청하는 method로 사용하게 된다.
대신에 캐시가 가능하고 post에 비해서 속도가 빠른 장점을 가지고 있기 때문에 해당 기능으로는 최적화 되있다고 할 수 있다.
post는 get의 반대의 특성을 가지고 있다.
1. post에 담을 수 있는 용량 제한이 없다.
댓글이나 장문의 글, 많은 사용자분들의 정보를 담아서 보내더라도 post는 보낼 수 있는 한계가 없기 때문에 가능하다.
보내는 데이터는 body에 담기게 된다.
2. url에 기본 정보가 담기지 않는다.
어떤 정보를 보내는지 parameter에서 볼 수 없기 때문에 '어느정도' 보안이 되어있다.
하지만 http에서는 중간에 가로챌 수 있는 위험이 있기 때문에 post라고 해도 보안을 신경써야 한다.
3. 캐시가 되지 않는다.
즉, 같은 요청을 보내더라도 캐시가 되지 않고 리소스 그대로 서버에 요청을 하게 된다. 같은 요청이라도 다른 응답을 받을 수도 있다.(예를 들면 로그인 중복과 같은 부분들)
이러한 점들로 인해서 주로 post는 정보를 보내는