HTTP 메소드에는 Get 방식과 Post 방식이 존재한다.
Get 방식이든 Post 방식이든 둘 다 브라우저가 서버에게 요청하는 것이다.
[ 주요 역할 : 이미 존재하는 resource에 대한 요청 ]
GET으로 요청이 왔을때 필요한 데이터를 body에 담지 않고, 쿼리스트링을 통해 전송한다.
→ URL 끝에 ?와 함께 이름과 값으로 쌍을 이루는 요청 파라미터를 쿼리스트링이라고 함!
이때 요청 파라미터가 여러개 이면 &로 연결을 한다.
쿼리 스트링을 사용할 경우 URL에 조회 조건을 표시하기 때문에 특정 페이지를 링크 하거나 북마크 할 수 있다.
ex) www.example.-url.com/resources?test1:value1&test2:value2
그리고 GET은 불필요한 요청을 제한하기 위해서 요청이 캐시될 수 있다. js,css, img와 같은 정적 컨텐츠들은
데이터양이 크고, 변경될 일이 적기 때문에 반복해서 동일한 요청을 보낼 필요가 딱히 없다.
따라서 정적 컨텐츠를 요청하고 나면 브라우저에서는 요청을 캐시해두고, 동일한 요청이 발생할 경우
서버로 요청을 보내지 않고 전에 캐시 해 둔 데이터를 사용한다.
[ GET 방식 요약 ]
- 쿼리스트링을 통해 데이터를 전송한다.
- 특정 페이지를 링크 혹은 북마크 할 수 있다.
- 브라우저 히스토리에 기록이 남는다.
- 요청이 캐시될 수 있다.
- 길이 제한이 있다.
- 중요한 정보를 다루면 안된다. (보안적 측면)
[ 주요역할 : 새로운 resource 생성 혹은 기존의 resource에 대한 변경 ]
POST 방식은 GET 방식과 다르게 전송해야되는 데이터를 HTTP 메세지의 body에 담아서 전송한다.
HTTP 메세지의 body는 길이 제한없이 데이터를 전송할 수 있다. 그래서 GET 방식과는 다르게 대용량의
데이터를 전송할 수 있다.
그리고 POST로 요청을 보낼 때는 요청 헤더의 Content-Type에 요청 데이터 타입을 표시해야 한다.
[ POST 방식 요약 ]
- 요청이 캐시 되지 않는다.
- 길이 제한이 없다.
- 브라우저의 히스토리에 남지 않는다.