0. 들어가기
HTTP(Hypertext Transfer Protocol)는 웹에서 데이터를 주고받는 데 사용되는 프로토콜이다.
클라이언트(웹 브라우저, 앱 등)가 데이터를 화면에 띄우기 위해서는 서버에 요청을 보내야 하는데, 이 때 HTTP 요청 메서드를 사용하고, 서버는 해당 요청에 따라 적절한 응답을 제공한다.
HTTP 요청 메서드 중 가장 일반적인 것이 GET과 POST가 되겠다.
오늘은 GET, POST에 대해 알아보자
1. GET method
HTTP 프로토콜의 일부로서, 웹 페이지를 가져오기 위해 먼저 GET method가 도입되었다.
GET 요청은 URL을 통해 데이터를 전송하는 방식이다.
데이터가 URL의 쿼리 스트링(Query String)에 포함되어 보내지는데 ( 예: www.example.com?id=123&name=test ) 데이터 크기에 제한이 있으며, 대략 2,048자 이내로 전송할 것을 권장한다.
URL에 데이터가 포함되기 때문에 민감한 정보(예: 비밀번호)를 전송하기에 적합하지 않고, 웹 브라우저의 기록에 남아 쉽게 북마크할 수 있다.
그래서 주로 조회 기능에 사용되어 서버에서 데이터를 가져오는 데 사용된다.
2. POST
웹이 발전함에 따라 사용자들은 웹 페이지에 데이터를 제출하거나 서버로 데이터를 전송해야 할 필요성이 생겼다.
이를 위해 웹 페이지의 폼(form)을 작성하고 서버에 데이터를 제출하는 기능이 필요해졌는데, 이에 POST 메서드가 도입되었다.
POST 요청은 데이터를 HTTP 요청 본문(Body)에 포함하여 전송한다.
데이터 크기에 제한이 없으며 더 많은 데이터를 전송하는 데 사용할 수 있다.
본문에 데이터가 포함되기 때문에 민감한 정보도 안전하게 전송할 수 있고, 웹 브라우저 기록에 저장되지 않아 쉽게 북마크할 수 없다.
그래서 POST는 주로 데이터를 서버에 작성, 수정, 삭제 등의 목적으로 사용된다.
3. GET과 POST의 서로 다른 사용
POST가 뒤에 단점을 보완해서 나왔지만 GET을 사용하는 이유도 있다.
GET과 POST의 장단점을 알아보자.
3.1 GET의 장단점
GET의 장점
1. 캐싱: GET 요청은 캐싱될 수 있다. 캐시를 활용하면 이전에 요청한 내용을 다시 가져오기 때문에 서버에 덜한 부하를 주게 된다.
2. 북마크 및 공유: GET 요청은 URL에 데이터가 포함되어 있기 때문에 북마크로 저장하거나 URL을 복사하여 다른 사람과 공유하기 용이하다.
3. 브라우저 기록: GET 요청은 브라우저의 기록에 남아 방문한 페이지를 추적할 수 있다.
GET의 단점
1. 보안: GET 요청은 URL에 데이터가 노출되기 때문에 보안에 민감한 정보(비밀번호, 개인정보 등)를 전송하는데 적합하지 않다.
2. 데이터 길이 제한: 브라우저와 서버에서 URL의 길이에 제한이 있을 수 있으며, 데이터를 담을 수 있는 용량이 제한된다.
3.2 POST의 장단점
POST의 장점
1. 보안: POST 요청은 요청 본문에 데이터를 담아 보내기 때문에 URL에 노출되지 않는다. 따라서, 보안에 더 적합하다.
2. 데이터 길이 제한 우회: POST 요청은 요청 본문에 데이터를 담기 때문에 URL 길이 제한을 우회할 수 있다.
3. 서버에 대한 영향 최소화: POST 요청은 캐싱되지 않기 때문에 서버에 요청한 내용이 기록되지 않는다.
- 왜 POST는 캐싱이 불가능할까?
POST 요청은 캐싱이 불가능하다는 것은 엄밀히 말하면 절대적인 규칙은 아니다.
캐싱은 이전에 요청한 결과를 저장하여, 동일한 요청이 다시 들어왔을 때 서버에 다시 요청하지 않고 캐시된 결과를 사용함으로써 성능을 향상시키는 기술이다. 하지만 POST 요청은 데이터를 요청 본문에 담아서 보내기 때문에 캐시될 필요가 없어지는 것이다.
POST의 단점
1. 캐싱 불가능: POST 요청은 캐싱되지 않기 때문에 이전에 요청한 내용을 다시 가져오지 않고 항상 새로운 요청을 보낸다. 이로 인해 서버 부하가 더 발생할 수 있다.
2. 북마크 및 공유 어려움: POST 요청은 URL에 데이터가 포함되지 않기 때문에 북마크로 저장하거나 URL을 복사하여 공유하기 어렵다.
마무리
이러한 이유로 서버로부터 정보 조회를 요청할 때는 GET요청이 사용되며, POST요청은 서버로 데이터를 제출해 데이터를 변경하고자 할 때 사용한다. 데이터는 요청 본문에 담겨서 전송된다.
'개발' 카테고리의 다른 글
Download pre-built shared indexes 공유 인덱스(인덱싱) 알림, 경고(IntelliJ) (0) | 2023.08.05 |
---|---|
Microsoft Defender configuration(IntelliJ)알림, 경고(윈도우 디펜더 제외:InetlliJ) (0) | 2023.08.05 |
메타태그(meta tag), 메타데이터(meta data)란 무엇일까? (0) | 2023.08.03 |
Ajax(정보 교환 기법) 에이잭스를 알아보자 (0) | 2023.08.01 |
메모리 구조에 대해 알아보자 (0) | 2023.07.25 |