[GET방식]과 [POST방식]의 차이점

Jun_Gyu·2023년 3월 27일
0
post-thumbnail

GET

GET 방식은 클라이언트가 서버로 데이터를 요청하기 위해 사용되는 Method이다. GET 요청을 할 때는 Body 부분은 비어있고, 헤더에 Body의 콘텐츠 타입을 명시하는 Content-Type 헤더 필드도 적지 않는다. 아래와 같이 URL뒤에 쿼리 스트링(Key와 Value)을 붙이고 HTTP 패킷의 헤더에 포함해서 서버에 데이터를 요청한다.

하지만, URL의 "?"표시 뒤에서부터 쿼리 스트링으로 데이터를 표현하는데 입력된 데이터값들이 노출되기 때문에, 로그인과 회원가입 등의 웹 페이지에서 GET 방식을 사용하는 것은 보안에 있어서 큰 문제를 야기할 수 있다. 따라서, GET 방식의 경우에는 게시판의 게시물, 목록의 조회와 같은 간단한 데이터를 요청할때 적합한 Method이다. 또한, *캐싱이 가능하므로 처리속도가 빠르다는 장점이 있다.

캐싱(Cashing): 한번 접근 후 또 요청할 시 빠르게 접근하기 위해서 레지스터에 데이터를 저장시켜 놓는 것.

GET 방식의 특징

  • URL에 쿼리 스트링(데이터)을 붙여 서버로 전송
  • 데이터를 Header(헤더)에 포함하여 전송
  • URL에 정보들이 그대로 노출되기 때문에 POST 방식에 비해 보안에 취약
  • 캐싱이 가능
  • POST 방식에 비해서 데이터의 전송속도가 빠름
  • 전송하는 데이터양의 한계가 존재함 (브라우저마다 GET 요청 길이의 제한 존재)
  • 브라우저 히스토리에 기록이 남는다

POST

POST 방식은 클라이언트가 서버로 데이터를 전송해 리소스를 추가하거나 생성하기 위해서 사용되는 Method이다. POST 요청 시 HTTP 패킷의 헤더에 Body의 콘텐츠 타입을 명시하는 Content-Type 헤더 필드를 포함하고 HTTP 패킷의 Body에는 데이터를 담아서 서버로 전송한다.

POST 방식은 GET 방식과 비교했을 때 데이터들이 URL상에 표시되지 않고, HTTP 패킷의 Body에 담겨 서버로 데이터가 전송된다. 또한 보내는 데이터의 양에 제한이 없기 때문에 대용량의 데이터를 전송할때는 POST 방식이 적합하다. 그리고 앞서 언급한것처럼 데이터가 URL상에 표시가 되지 않기때문에 GET 방식 보다는 상대적으로 보안적이지만, body의 데이터도 크롬 개발자도구나 Fiddler와 같은 툴을 통해서 요청 내용을 확인할 수 있기 때문에 반드시 암호화 과정을 거쳐줘야 한다. POST 방식의 경우에는 서버의 값이나 상태를 병경하기 위해서 사용되므로 글쓰기나 글 수정, 그리고 회원가입, 로그인과 같은 작업에 적합하다.

POST 방식의 특징

  • 데이터들을 URL 뒤에 붙여서 서버로 보내는 것이 아닌, Body에 담아서 전송
  • 요청 헤더의 Content-Type에 콘텐츠 타입을 명시
  • 데이터들이 URL에 노출되지 않기 때문에 GET 방식보다 상대적으로 보안적
  • 데이터들을 Body에 담기 때문에 서버로 보내는 데이터양은 제한이 없다.
  • URL에 데이터가 노출되지 않기 때문에 캐싱이 불가능
  • 클라이언트에서 인코딩, 서버에서 디코딩
  • 요청받는 시간제한이 존재
  • 브라우저 히스토리에 기록이 남지 않는다.

멱등성이란? - 연산을 여러번 하더라도 결과가 달라지지 않는 성질을 의미. Get요청의 경우에는 여러번 요청하더라도 응답이 같지만, Post요청의 경우에는 리소스를 새로 생성하거나 업데이트하므로 서버에게 동일한 요청을 여러번 전송하더라도 응답은 항상 다를 수 있음.

요약

  • GET 방식은 데이터를 가져오는 것.
  • POST 방식은 데이터를 생성하거나 수정하는 것.

참고글 출처
https://cocoon1787.tistory.com/526

profile
시작은 미약하지만, 그 끝은 창대하리라

0개의 댓글