GET 메소드는 리소스를 요청하는 메소드이고, POST 메소드는 리소스를 생성 또는 업데이트를 하는 메소드입니다.
우선 결론을 먼저 말씀드리자면, GET과 POST의 차이는 북마크, 캐싱, 리소스 전달 방식, 데이터 길이, 멱등성 등이 있습니다.
(북 캐 리 데 멱) (북 캐 리 데 멱) (북 캐 리 데 멱) 두문식 암기법이 가끔 도움이 됩니다.
GET은 POST와 다르게 북마크 추가와 캐싱이 가능합니다.
그리고 GET 방식은 요청하는 데이터가 HTTP Request Message의 Header 부분에 url 이라는 공간에 담겨서 전송되는 쿼리스트링 방식입니다. 그래서 데이터의 크기가 제한적이고, URL에 데이터가 노출되기 때문에 보안성이 낮습니다.
URL + ?+ 데이터이름=값
형태로 표현됩니다. (http://naver.com/search?query=cat
)반면에 POST 방식은 HTTP Request Message의 Body 부분에 데이터를 담아 전송되고 URL에는 아무런 데이터가 포함되지 않습니다. 그래서 GET 방식보다 데이터 크기와 보안성이 낫습니다.
멱등성이란 연산을 여러 번 하여도 결과가 달라지지 않는 성질
GET은 멱등성이 있기 때문에, GET 요청을 반복해도 결과가 달라지지 않습니다.
반면, POST는 멱등성이 없기 때문에 POST 요청을 반복하면 매번 새로운 데이터를 생성할 겁니다.