** GET 과 POST의 차이점을 아래와 같이 3가지로 나누어 정리해보았다.
1. GET은 요청을 URL에 붙이므로 북마크가 가능하다.
[예시 URL]
https://www.soundarea.com/?sound=20&music=3
다음과 같이 URL이 있을 때, ? 뒤에 sound가 key가 되고 = 뒤에는 value 다.
즉, sound는 20이라는 value를 가지고 music은 3이라는 value를 가지게 된다.
URL 형식으로 인코딩 된 쿼리 정보를 만들어 송신한다.
URL 주소와 물음표 뒤에 붙은 키와 값의 쌍이 연속된 부분이 쿼리 문자열이다.
여러 개의 파라미터가 있을 때는 앰퍼샌드(&)로 연결한다.
하지만, 보안상 취약하므로 사용하지 않는 것을 권장한다.
반면, POST는 폼의 파라미터를 URL에 포함하는 것이 아니라 요청한 본문에 포함한다.
GET처럼 요청 내용을 쉽게 볼 수 없고 북마크 할 수도 없기 때문에 보안에서는 GET이 더 낫다.
물론, 주소 창에 표시되지 않는다고 해서 POST가 무조건 안전한 것은 아니다. 기밀 유지를 위해서는 SSL 등의 암호화 통신을 선호한다.
2. GET으로 송신할 수 있는 데이터 크기에는 제한이 있다.
POST 데이터 크기는 무제한인 반면 GET의 쿼리 정보는 제한이 있다.
3. GET 응답은 캐시되지만 POST 응답은 캐시되지 않는다.
같은 내용의 GET 요청은 매회 같은 결과를 가져오는데 이는 GET 요청에 대한 응답이 캐시되기 때문이다.
즉, 내용이 바뀌지 않는 응답을 얻으려는 요청에 GET은 적합하다.
GET으로 매번 최신의 응답을 얻고자 할 때 파라미터를 시각에 붙여 매회 요청하는 변경 기술을 사용할 수 있다.
POST 요청에 대한 응답은 캐시되지 않기 때문에 쇼핑 카트의 내용을 표시할 때는 POST를 사용한다.
데이터베이스 갱신에는 GET을 사용하면 안된다.
출처