GET과 POST는 서버에 정보를 요청하는 HTTP 메서드이다. 목적에 따라 사용되는 메서드는 다르다. 두 메서드의 차이를 알아보자.
GET 요청
GET/serach?q=hello&hl=ko HTTP/1.1
Host: www.google.com
1. 리소스 조회에 사용한다.
2. 서버에 전달할 데이터는 쿼리를 통해서 전달한다. 쿼리 파라미터에 내용이 노출되기 때문에 민감한 데이터를 다룰 때는 사용이 적절치 않다.
3. 길이 제한이 있다.
POST 요청
POST/membersHTTP/1.1
Content-Type: application/json
{
"username": "hello",
"age": 20
}
1. GET과 다르게 전송할 데이터를 메시지 바디에 담아서 전달한다. 바디의 타입은 요청 헤더의 Content-Type에서 설정한다. 만약 타입을 설정하지 않으면 서버는 내용이나 url에 포함된 리소스의 확장자명으로 데이터 타입을 유추한다.
2. 전달된 데이터로 신규 리소스를 등록하거나 프로세스 처리에 사용한다.
3. 데이터 길이에 제한이 없다.
4. 브라우저 히스토리에 남지 않는다
GET과 POST의 차이?
1. 사용 목적: GET은 리소스를 조회할 때, POST는 서버의 리소스를 새로 생성하거나 업데이트 할 때 사용된다.
- DB와 비교하면 GET은 SELECT, POST는 CREATE에 가깝다.
2. 바디의 유무: GET은 URL 파라미터에 데이터를 담아 보내기 때문에 메시지에 바디가 없다. 그러나 POST는 바디에 데이터를 담아 전달한다.
3. 멱등성(Idempotent): GET요청은 멱등이고 POST는 멱등이 아니다.
- 멱등은 연산을 여러 번 실행하더라도 결과가 달라지지 않는 성질을 뜻한다. GET은 리소스를 조회한다는 점에서 여러 번 요청하더라도 응답이 똑같다. POST는 리소스를 생성하거나 업데이트 할 때 사용되기 때문에 멱등이 아니다. POST로 서버 리소스가 변경될 수 있기 때문이다.
'네트워크' 카테고리의 다른 글
쿠키(Cookie)와 세션(Session) (3) | 2024.10.22 |
---|---|
[HTTP] HTTP의 특성 : 비연결성(Connectionless), 무상태성(Stateless) (1) | 2024.10.18 |