get 과 post는 form(ex. 로그인폼, 회원가입폼 등등)에서 서버로 데이터를 전송하는 방식이다.
■ get의 예시
- 데이터가 url에 포함된다. ?구분자를 기준으로 좌측이 url, 우측이 파라미터 이다.
- https://land.naver.com/news/newsRead.naver?type=headline&prsco_id=648&arti_id=0000011499 (get방식 url예시)
위의 링크를 예시로들어보면 ?를 기준으로 좌측이 url이고 우측은 데이터(파라미터)를 표현해준다.
파라미터끼리는 &를 이용하여 구분하고 (이름 = 값) 형태로 되어있다.
https://land.naver.com/news/newsRead.naver ? type=headline & prsco_id=648 & arti_id=0000011499
이때 url의 길이의 한계가 있을 수 있어서 그 이상의 데이터가 필요하면 데이터가 누락될 수 있다.
만약 로그인폼에서 id , password를 get방식으로 서버에 요청하면 url에 내 id와 비밀번호가 그대로 노출이된다. 즉, 보안에 취약하다는 것을 알 수 있다.
■ post의 예시
- get에서와 다르게 해당정보를 header에 body에 담아서 전송한다.(개발자도구 네트워크탭에 request header에 form data보면 폼에서 전달하고자하는 데이터가 보인다.)
- 따라서 만약 위에 링크를 post방식으로 전달하였다면 그때의 url은 다음과 같다.(https://land.naver.com/news/newsRead.naver)
데이터를 header에 body에 담아 전송하기 때문에 크기의 제한이 없지만, 캐싱기능이 없기때문에 빠르고 반복적으로 호출할때 적합하지 않다.
■ 정리
즉, 각각의 방법의 목적에 맞게 사용하면 된다.
민감하지 않는 데이터를 다룰때는 get방식을 사용하면 좋고, id, password등 민감한 정보가 포함되어있으면 post방식이 좋다.