안녕하세요!
이번 포스팅 에서는 웹 개발자 라면 꼭 알아야 할 개념인 HTTP 통신 함수의 종류 중 GET
과 POST
방식에 대해 알아 보도록 하겠습니다!😄
개발자 면접을 볼 때 가끔 질문을 받는 내용이여서 정리하게 되었습니다.📙
🗣 참고: 👉🏻경력 개발자 면접 질문 포스팅도 함께 읽으시면 면접 시 도움이 됩니다!🙆🏻♀️
1. HTTP란?
HTTP(Hyper Text Transfer Protocol
)는 웹상에서 클라이언트와 서버 간에 요청/응답으로 데이터를 주고 받을 수 있는 프로토콜입니다.- 클라이언트가 HTTP 프로토콜을 통해 서버에게 요청을 보내면 요청에 맞는 응답을 클라이언트에게 전송합니다. HTTP 요청에 포함되는 HTTP 메소드는 서버가 요청을 수행하기 위해 해야할 행동을 표시하는 용도로 사용합니다.
- 이러한 HTTP 메소드 중 대표 적인
GET
과POST
의 특징과 차이점을 알아보도록 하겠습니다.
(HTTP 통신 웹 브라우저 동작 과정은 👉🏻여기 를 참고해 주세요!)
2. GET 방식 특징
- GET은 서버로부터 정보를 조회하기 위해 설계된 메소드 입니다.
- 요청을 전송할 때 필요한 데이터를 Body에 담지 않고, 쿼리 스트링을 통해 전송 합니다. (
URL 끝에 ?와 함께 이름과 값으로 쌍을 이루는 요청 파라미터
를 쿼리 스트링이라고 합니다.) - 만약 요청 파라미터가 여러개 일 경우라면 &으로 연결 합니다. 쿼리스트링을 사용하게 되면 URL에 조회 조건을 표시하기 때문에 특정 페이지를 링크하거나 북마크 할 수 있습니다.
(ex.
http://localhost:3000/reserve?id=1&date=2021-02-22
) - GET은
불필요한 요청을 제한하기 위해 요청이 캐시
될 수 있습니다. - 정적 컨텐츠(js, css, 이미지)는 데이터양이 크고, 변경될 일이 적어서 반복해서 동일한 요청을 보낼 필요가 없습니다. 정적 컨텐츠를 요청하고 나면
브라우저에서는 요청을 캐시
해두고, 동일한 요청이 발생할 때 서버로 요청을 보내지 않고캐시된 데이터를 사용
합니다. - 프론트엔드 개발을 하다보면 정적 컨텐츠가 캐시돼 컨텐츠를 변경해도 내용이 바뀌지 않는 경우가 종종 발생합니다. 이 때, 브라우저의 캐시를 지워주면 다시 컨텐츠를 조회하기 위해 서버로 요청을 보내게 됩니다.
3. POST 방식 특징
- POST는 리소스를 생성/변경하기 위해 설계된 메소드 입니다.
- GET과 달리 전송해야될 데이터를 HTTP 메세지의 Body에 담아서 전송합니다.
- HTTP 메세지의 Body는 길이의 제한없이 데이터를 전송할 수 있습니다. 그래서 POST 요청은 GET과 달리 대용량 데이터를 전송할 수 있습니다.
- POST는 데이터가 Body로 전송되고 내용이 눈에 보이지 않아 GET보다 보안적인 면에서 안전하다고 생각할 수 있지만, POST 요청도 크롬 개발자 도구, Fiddler와 같은 툴로 요청 내용을 확인할 수 있기 때문에 민감한 데이터의 경우에는 반드시 암호화해 전송해야 합니다.
4. GET/POST 장단점 및 사용
-
GET 방식(Select)
- 서버에게
동일한 요청을 여러 번 전송하더라도 동일한 응답
이 돌아옵니다. 설계원칙에 따라 서버의 데이터나 상태를 변경시키지 않아야 하기 때문에 주로 조회를 할 때에 사용 합니다. - 예를 들어, 브라우저에서 웹페이지를 열어보거나 게시글을 읽는 등 조회를 하는 행위는 GET으로 요청하게 됩니다.
- (ex. 검색 결과 등 고정적인 주소 및 링크 주소로 사용)
- 서버에게
-
POST 방식(Update)
- 서버에게 동일한 요청을 여러 번 전송해도 응답은 항상 다를 수 있습니다. 이에 따라 POST는 서버의 상태나 데이터를 변경시킬 때 사용됩니다.
- (ex. 게시글을 쓰면 서버에 게시글이 저장이 되고, 게시글을 삭제하면 해당 데이터가 없어지는 등)
- POST는
생성, 수정, 삭제
에 사용할 수 있지만,생성
에는 POST,수정
은 PUT 또는 PATCH,삭제
는 DELETE가 더 용도에 맞는 메소드라고 할 수 있습니다. - POST를 사용하면 정보를 숨길 수 있지만
SSL(Secure Sockets Layer)
을 사용 하지 않으면 GET과 마찬가지 입니다.
5. GET/POST 차이점
- GET과 POST는 이처럼 큰 차이가 있기 때문에 설계 원칙에 따라 적절한 용도로 사용 해야 합니다.
GET | POST |
---|---|
URL길이(최대 2048자)는 한계가 있음 | 해결하고 싶다면 POST 메소드 사용 |
캐시가 남아있어 전송 속도가 빠름 | 캐시가 남지 않아 보안적인 면에서 유리 |
브라우저 히스토리에 파라미터가 남음 | 히스토리에 파라미터가 저장되지 않음 |
ASCII 캐릭터만 허용 | 바이너리 데이터가 허용 |
오늘 준비한 내용은 여기까지 입니다.
이번 포스팅이 도움이 되셨거나 궁금한 점이 있으시다면 언제든지 댓글을 달아주세요!🙋🏻♀️✨