CS지식

GET방식 POST방식 특징

indeep 2023. 4. 18. 22:09

클라이언트는 웹 브라우저 주소창에 URL을 입력하고, 서버는 클라이언트 요청에 응답을 하여 웹페이지를 보여주는 것이 가장 기본적인 동작의 흐름이다.

이때 클라이언트가 서버로 보내는 데이터를 HTTP 패킷이라고 하며, HTTP 패킷은 크게 HeaderBody로 나뉜다.

 

그전에 간단하게 HTTP의 개념을 짚고 넘어가자.

HTTP
Hyper-Text Transfer Protocol은 www상에서 문서를 주고받는 프로토콜이다.
(프로토콜 : 컴퓨터 또는 전자기기 간의 원활한 통신을 위해 지키기로 약속한 규약)
웹 상에서 통신을 주고 받을 수 있는 주체는 서버클라이언트다.
즉, 서버와 클라이언트 간 통신을 주고 받을 때 쓰는 규칙을 HTTP라고 한다.

 

HTTP 패킷은 클라이언트가 서버로 요청을 보낼 때 보내는 데이터를 HTTP 패킷이라고 표현한다.

Header에는 HTTP 메서드 방식, 클라이언트의 정보, 브라우저 정보, 접속할 URL 등등과 같은 클라이언트 정보를 담는다.

Body에는 보통 비어있다가, 특정 데이터를 담아서 서버에게 요청을 보낼 수 있다.

(그래서 Body에는 POST 요청시 전송되는 데이터가 들어가는 부분이다. GET 요청때는 빈칸이다.)

 

HTTP의 메서드

GET(가져오다) URL에 표시된 리소스를 가져오기
POST(게시하다) Body에 정보를 담아 서버에 입력
PUT(집어넣다) URL에 표시된 리소스와 바꿔 치기
PATCH(고치다) PUT과 다르게 일부만 수정
DELETE(지우다) URL에 표시된 특정 리소소를 삭제

 

 

GET 방식

서버로부터 정보를 조회하기 위한 방식이다.

 

GET 방식은 데이터를 전송할 때 Body에 담지 않고, 쿼리스트링을 통해 전송을 하는 방법이다.

클라이언트가 입력한 쿼리의 key와 value가 결합돼서 스트링 형태로 서버에 전달되는 것이다.

http://localhost:3000/login?id=admin&pw=1234

위의 코드를 보면 key값으로 id와 pw, value값으로 admin과 1234가 담겨져 있다.

 

URL의 "?"뒤에 붙어서 데이터를 표현하는데, 주소에 데이터가 담겨져 있다 보니깐 위의 코드처럼 회원 정보같은 중요한 데이터를 표시하면 문제가 생기게 된다. GET 방식은 브라우저마다 글자 수 제한이 있기 때문에 게시판의 게시물, 목록 조회와 같은 간단한 데이터를 요청할 때 적합하다. 그리고 캐싱이 가능하므로 속도가 빠르다.

(캐싱 : 주어진 리소스의 복사본을 저장하고 있다가 요청하면 제공하는 기술)

 

또한 쿼리스트링을 사용하게 되면 URL에 조회 조건을 표시하기 때문에, 특정 페이지를 링크하거나 북마크도 가능하다.

 

 

POST 방식

클라이언트가 서버로 데이터를 전송해 리소스를 생성 / 변경하기 위해 설계되었다.

GET과는 달리 전송해야될 데이터를 HTTP 메세지의 Body에 담아서 전송한다. 동시에 HTTP 패킷의 헤더에는 Body의 콘텐츠 타입을 명시하는 Content-Type 헤더 필드를 포함한다.

 

HTTP 메세지의 Body는 길이의 제한 없이 데이터 전송이 가능하다. 그래서 POST 요청은 GET과 달리 대용량 데이터 전송이 가능하다. 

대부분 착각하는 것이 POST 방식은 데이터가 Body로 전송되고 내용이 URL을 통해 보이지 않아서 GET보다 안전하다고 생각하지만, 크롬 개발자 도구로 요청 내용을 확인할 수 있기 때문에 민감한 데이터는 반드시 암호화 해야 한다.

글쓰기, 글 수정과 같은 작업에 적합하다.

 

 

결론!!!!

GET 방식은 이름 그대로 무언가를 가져오는 것.(데이터)

POST 방식은 포스트를 붙이듯이 무언가를 만들거나 수정하는 것

 

참고블로그

반응형