웹상에서 클라이언트가 프로토콜을 통해 서버에 데이터를 요청(Request)하면 서버는 이를 처리하여 결과를 클라이언트에 응답(Response)해주는데 이때, 클라이언트가 서버에게 요청하는 방법을 HTTP Method 라고 한다. HTTP Method 에는 8가지의 종류 중 가장 많이 쓰이는 GET과 POST 방식을 소개하고자 한다.
GET방식은 클라이언트가 서버에게 어떤 리소스를 요청하는 것이다.
GET은 HTML 페이지를 요청하거나 어떤 API를 통하여 데이터를 읽어들이거나, 이미지를 로딩하기 위하여 자주 사용되는 메소드이다. 즉, 데이터를 받아오는 역할만 수행한다.?를 사용하여 파라미터를 작성하게 되고 &를 붙여 여러 개의 파라미터를 구분하게 된다.
POST방식은 클라이언트가 서버로 데이터를 보내고, 서버가 이 데이터를 처리해 달라고 요청하는 것이다.
POST는 생성 및 업데이트를 하기 위해 서버로 데이터를 보내는 데 사용된다. 즉, 서버에 내가 요청한 데이터를 추가로 작업하기 원할 때 사용하는 메소드다.GET방식과 달리 body 영역에 데이터를 실어 보내 보안이 필요한 부분에 자주 사용된다.
- 사용용도
GET은 사용자에게 필요한 데이터를 받아오는 역할을 하고,POST는 사용자의 어떤 행동을 서버에 반영하는 역할을 한다.- DB로 예시를 들면,
GET은 SELECT에 가깝고,POST는 CREATE에 가깝다고 볼 수 있다.- 캐싱
GET의 파라미터들은 URL의 일부분이기 때문에 브라우저 히스토리에 남게되고,POST는 브라우저에 기록이 남지 않는다.GET은 URL로 인코딩되어 즐겨찾기가 가능하고,POST는 즐겨찾기가 불가능하다.- 보안
GET은 URL을 통해 모든 파라미터를 전달하기 때문에 주소창에 전달 값이 노출되어 보안상 취약하고,POST는 데이터가 노출되지 않기 때문에 보안이 필요한 경우에 용이하다.- 데이터양
GET은 URL 길이가 제한이 있어 전송 데이터양이 한정되어 있고,POST는 전송 데이터양 제한이 없다.
GET과 POST는 둘 다 HTTP 프로토콜을 이용해 서버에 무언가 request할 때 사용하는 방식이지만, 사용하는 상황이 다르다는 것을 알 수 있다. 즉, 가져올 때와 수행할 때를 파악해서 적합한 곳에 활용해야 한다.
참고사이트
http://sonim1.tistory.com/95
https://yozm.wishket.com/magazine/detail/694/
https://hongsii.github.io/2017/08/02/what-is-the-difference-get-and-post/
https://cocoon1787.tistory.com/526