get과 post 요청을 각각 언제 사용할까요
GET
GET은 클라이언트에서 서버로 어떠한 리소스로부터 요청하기 위해 사용되는 메서드입니다.
-
GET을 통한 요청은 URL 주소 끝에 파라미터
로 포함되어 전송됩니다.
이 부분을 쿼리 스트링(query string)
이라고 부릅니다.
ex) /api/signup?id='asdf'&name='hong'&password='1234'
=> 서버에서는 id, name, password의 파라미터 값을 전달받을 수 있습니다.
*패킷 : 네트워크를 통해 전송하기 쉽도록 자른 데이터의 전송 단위
GET 의 특징
- 캐시가 가능하다
: GET을 통해 서버에 리소스를 요청할 때 웹 캐시가 요청을 가로채 서버로부터 리소스를 다시 다운로드하는 대신에 리소스의 복사본을 반환합니다.
http 헤더에서 cach-control 헤더를 통해 캐시 옵션을 지정할 수 있습니다.
- 브라우저 히스토리에 남는다
- 북마크 될 수 있다.
- 길이 제한이 있다.
- 중요한 정보를 다루면 안된다
: 파라미터에 다 노출이 되어버리기 때문에 최소한의 보안으로 사용하지 말자
*캐시 : 웹 페이지 요소를 저장하기 위한 임시 저장소
POST
POST는 클라이언트에서 서버로 리소스를 생성하거나 업데이트하기 위해 데이터를 보낼 때 사용되는 메서드입니다.
- post 방식은 데이터 패킷의
바디
에 담아서 전달합니다.
이 때 바디의 타입은 Content-Type 헤더에 따라 결정됩니다.
- GET 방식에 비해 상대적으로 큰 데이터를 전달할 수 있기 떄문에 큰 데이터를 전달 할 때에는 POST 방식이 적절합니다.
POST의 특징
- 캐시되지 않는다
- 브라우저 히스토리에 남지 않는다.
- 북마크 되지 않는다
- 데이터 길이에 제한이 없다.
GET과 POST의 차이
- 사용목적
: GET은 서버의 리소스에서 데이터를 요청할 때, POST는 서버의 리소스를 새로 생성하거나 업데이트할 때 사용됩니다.
- 요청에 Body 가 있는지 없는지
: GET은 URL 파라미터에 요청하는 데이터를 담아 보내기 때문에 HTTP 메시지에 body가 없고, POST는 존재합니다.
- 이외의
PUT
DELETE
등 도 적절히 목적에 맞게 사용하면 유용합니다.