오늘은 HTTP통신에서 대표적으로 사용되는 GET과 POST에 대해 알아보도록 하겠습니다
GET
GET은 클라이언트에서 서버로 어떠한 리소스로부터 정보를 요청하기 위해 사용되는 메소드 입니다
간단히 게시판의 게시물 조회나, 쇼핑몰 사이트에 상품 리스트 조회 같은 요청을 할 때 GET이 사용이 됩니다
GET을 통한 요청은 URL 주소 끝에 파라미터로 포함이 되어 전송이 되며
이 부분을 쿼리 스트링이라고 합니다
쿼리 스트링에 방식은 URL끝에 '?'를 붙이고 다음 변수명=값과 같은 형식으로 이어 붙입니다
(www.naver.com?name=1&name2=가나다)
위와 같이 쿼리 스트링을 전달을 하면 서버에서는 name, name2라는 파라미터명으로 해당 값들을 받을 수 있습니다
GET의 특징
1. GET의 요청은 캐싱이 가능합니다
GET을 통해 서버에 리소스를 요청할 때 웹 캐시가 요청을 가로채 서버로부터 리소스를 다시 다운로드하는 대신 리소스의 복사본을 반환합니다
2. GET 요청을 브라우저 히스토리에 남습니다
히스토리에 남기 때문에 브라우저 뒤로 가기 버튼과 기능이 동작합니다
3. GET 요청은 북마크가 될 수 있습니다
4. GET 요청은 길이 제한이 있습니다
5. GET 요청은 데이터를 요청할 때만 사용이 되며 중요한 정보를 다루면 안 됩니다
GET의 쿼리 스트링 같은 경우는 URL에 값들이 노출되기 때문에 중요한 정보를 담으면 안 됩니다
POST
post는 클라이언트에서 서버로 리소스를 생성하거나 업데이트하기 위해 데이터를 보낼 때 사용되는 메소드입니다
게시글 작성과 같은 요청을 할 때 POST를 사용합니다
POST는 전송할 데이터를 HTTP메소드 body부분에 담아서 서버로 보내게 됩니다
(body에 타입은 HTTP 헤더에 content-type으로 결정됩니다)
만약 content-type이 json일 경우 아래와 같은 json이 HTTP 메시지 body 담겨서 전송이 됩니다
{
id : "abc"
email : "a@naver.com"
}
POST로 데이터를 전송할 때 길이 제한이 따로 없어 용량이 큰 데이터를 보낼 때 사용하거나
아이디와 패스워드 같은 보안이 필요한 부분에서 사용이 됩니다
POST의 특징
1. POST 요청은 캐싱되지 않습니다
2. POST 요청은 브라우저 히스토리에 남지 않습니다
3. POST 요청은 북마크 되지 않습니다
4. POST 요청은 데이터 길이에 제한이 없습니다
GET과 POST의 차이점
GET과 POST의 특징에 대해서 알아보았으니 두 메서드의 차이점에 대해 알아보도록 하겠습니다
사용 목적 : GET은 서버 리소스에 데이터를 요청할 때 사용이 되고, POST는 서버 리소스를 새로 생성하거나 업데이트할 때 사용됩니다
body유무 : GET 쿼리 스트링 형식으로 URL 파라미터에 요청하는 데이터를 담아 보내기에 HTTP메세지에 body가 없습니다 반면 POST는 body에 데이터를 담아 보내기에 HTTP메시지에 body가 존재합니다
멱등성 : GET 요청은 멱등이며, POST는 멱등이 아닙니다
여기서 멱등이란?
멱등은 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미합니다
즉 GET은 리소스를 조회한다는 점에서 여러 번 요청하더라도 응답이 똑같을 것이고
반대로 POST는 리소스 새로 생성하거나 업데이트할 때 사용하기 때문에 멱등이 압니다
'프론트 CS' 카테고리의 다른 글
프론트 엔드 기술면접 준비하기(프론트엔드 면접질문) (0) | 2023.04.30 |
---|---|
브라우저 저장소 (0) | 2022.12.13 |
자바스크립트 this (0) | 2022.12.09 |
상태 관리 및 Redux (0) | 2022.12.05 |
자바스크립트 클로저 (0) | 2022.12.03 |