서버에 데이터를 보내는 두 가지 방식이다.
GET 은 가져오는 것이고 POST 는 수행하는 것이다.
단순히 피라미터의 값을 URL에 실어서 보내느냐 HTTP 패킷에 포장하여 보내느냐의 차이가 아니라 애초에 용도가 다르다.
처음 HTTP 가 설계될 때도 GET 은 말그대로 값을 가져오는 것, POST 는 게시하는 것이라는 뜻이 있어서 이런 이름은 붙였다고 한다.
GET 은 영어로 가져오다라는 의미를 가지고 있는데 그 기능을 쉽게 비유하면 도서관에서 책의 내용을 보기위해 그 책을 가져오는 것이다.
캐싱(Caching)이란?
캐시는 컴퓨터의 성능을 향상시기기 위해 사용되는 메모리를 말하는데 주기억장치와 CPU사이에 위치하고, 자주 사용하는 데이터들을 기억한다.
캐싱은 이 캐시 영역으로 데이터를 가져와서 접근하는 방식을 말한다.
예를 들면 속도가 느린 디스크의 데이터를 속도가 빠른 메모리로 가져와서 메모리상에서 읽고 쓰는 작업을 수행한다.
(캐싱의 이점: aws 캐싱 개요)
GET은 select 개념을 가지고 있다. 서버에서 어떤 데이터를 가지고 올때 사용한다. 즉, 서버의 값을 바꾸거나 추가 하는 개념이 아니다.
GET 의 가장 큰 특징은 URL에 포함시켜 데이터를 전송하는 것이다. 하지만 그로인해 외부에 노출되기에 보안에 취약하고 URL에 나타낼 수 있는 데이터에 한계가 있어 제한이 있다.
그럼 왜 GET을 사용하지? URL에 표기되지도 않고 데이터를 전송하는 POST가 있는데?
크게 두 가지 이유가 있는것 같다.
영어로 post는 부치다, 제출하다 라는 의미를 가지고 있다. 예를 들어 서류를 제출하는 것은 우리에 대한 정보를 제출하여(post) 추가하기 위함이다.
post는 언어 그대로 제출하는 기능을 가지고 있다. get과는 비슷한 기능이면서 다른 특징을 가지고 있는데 get은 URL에 노출이 되는 데이터지만 post는 body에 포함된 데이터이다. 그래서 get보다는 보안에 있어 약간의 우위에 있다. (하지만 URL에 표시가 안될 뿐이지 클라이언트에서 크롬 개발자 도구, Fiddler와 같은 툴로 요청내용을 다 확인이 가능하다. 그래서 보안을 신경쓴다면 다른 조취를 취해야한다.) 그리고 데이터 길이의 제한이 없고 캐싱를 사용할 수 없다.
그럼 post를 사용하는 경우는 뭘까? 요즘의 브라우저들은 URL의 길이 제한을 없애는 추세고 캐싱을 사용할 수 없어 get보다 효율적이지 못할텐데? 단순히 보안의 문제?
우선 post가 쓰이는 경우는 서버에서 값이나 상태를 바꿔주기 위해 사용한다. 직접적으로 URL에 노출되지 않기에 보안에 중요한 데이터 및 작성한 데이터를 제출하여 추가 또는 수정을 하는 것이다.
get과 post의 차이는 get은 변하지 않는 고정된 값으로 데이터를 나타내기 위해 사용하는 것이고 post는 변하는 값으로 데이터를 추가, 수정하기 위해 사용한다.
https://letitkang.tistory.com/165#:~:text=%EC%BA%90%EC%8B%9C%EB%8A%94%20%EC%BB%B4%ED%93%A8%ED%84%B0%EC%9D%98%20%EC%84%B1%EB%8A%A5,%EC%82%AC%EC%9A%A9%EB%90%98%EB%8A%94%20%EB%A9%94%EB%AA%A8%EB%A6%AC%EB%A5%BC%20%EB%A7%90%ED%95%A9%EB%8B%88%EB%8B%A4.&text=%EC%BA%90%EC%8B%B1%EC%9D%80%20%EC%9D%B4%20%EC%BA%90%EC%8B%9C%20%EC%98%81%EC%97%AD,%EC%93%B0%EB%8A%94%20%EC%9E%91%EC%97%85%EC%9D%84%20%EC%88%98%ED%96%89%ED%95%A9%EB%8B%88%EB%8B%A4.
https://codezip.tistory.com/741
https://aws.amazon.com/ko/caching
https://mangkyu.tistory.com/17