[Network] GET과 POST의 차이

토끼는 개발개발·2022년 2월 14일
2

Web

목록 보기
2/7
post-thumbnail

GET 방식

GET 방식은 서버로부터 정보를 조회하기 위해 설계된 메서드이다.

www.example-url.com/resources?name1=value1&name2=value2

GET은 요청을 전송할 때 필요한 데이터를 Body에 담지 않고, 쿼리스트링을 통해 전송한다.
URL의 끝에 ?와 함께 이름과 값으로 쌍을 이루는 요청 파라미터를 쿼리스트링이라 부른다.
GET방식은 간편하다는 장점이 있지만 어떤 데이터를 전송하는지 노출되므로 보안상으로 좋지 않다.


▶ GET 특징

  • 서블릿에 데이터를 전송할 때는 데이터가 URL 뒤에 name=value 형태로 전송된다.
  • 여러 개의 데이터를 전송할 때는 '&'으로 구분해서 전송된다.
  • get 요청은 캐시가 가능하다.
  • get 요청은 브라우저 히스토리에 남는다.
  • 보안이 취약하다.
  • 전송할 수 있는 데이터는 최대 255자이다.
  • 기본 전송 방식이고 사용이 쉽다.
  • 웹브라우저에 직접 입력해서 전송할 수 있다.
  • 서블릿에서는 doGet()을 이용해 데이터를 처리한다.



POST 방식

POST는 리소스를 생성/변경하기 위해 설계된 메서드이다.

www.example-url.com/resource

POST는 리소스를 생성/변경하기 위해 설계되었기 때문에 GET과 달리 전송해야될 데이터를 HTTP메세지 Body에 담아 전송한다. 이처럼 POST가 GET보다 보안적인 면에서 안전하다고 생각할 수 있지만, POST 요청도 크롬 개발자 도구와 같은 툴로 요청 내용을 확인할 수 있기 때문에 민감한 데이터의 경우 반드시 암호화해서 전송해야 한다.


▶ POST 특징

  • 서블릿에 데이터를 전송할 때는 TCP/IP 프로토콜 데이터의 body 영역에 숨겨진 채 전송된다.
  • POST 요청은 캐시되지 않는다.
  • POST 요청은 브라우저 히스토리에 남지 않는다.
  • 보안에 유리하다.
  • 전송 데이터 용량이 무제한이다.
  • 전송 시 서블릿에서는 또 다시 가져오는 작업을 해야하므로 처리 속도가 GET방식보다 느리다.
  • 서블릿에서는 doPost()를 이용해 데이터를 처리한다.



GET과 POST의 차이

  • 목적: GET은 조회 용도, POST는 생성 용도로 주로 쓰인다.
  • body유뮤: GET은 HTTP메세지에 body가 없고, POST는 있다.
  • 멱등(idempotent): GET은 멱등이며, POST는 멱등이 아니다.

멱등이란 것은 동일한 연산을 여러 번 수행하더라도 동일한 결과가 나타나는 것이다.
즉, GET이 Idempotent하다는 것은 서버에게 동일한 요청을 여러 번 전송하더라도 동일한 응답이 돌아와야 한다는 것을 뜻하며, 이에 따라 GET을 주로 조회할 때 사용하는 것이다.

반대로 POST는 Non-Idempoten하기 때문에 서버에게 동일한 요청을 여러 번 전송해도 응답은 다를 수 있다. 이에 따라 POST는 서버의 상태나 데이터를 변경시킬 때 주로 사용한다.

GET과 POST는 이러한 차이들이 있기 때문에 목적에 따라 알맞게 사용해야 한다.




Ref.

https://www.w3schools.com/tags/ref_httpmethods.asp
자바 웹을 다루는 기술(저자: 이병승) p198~205

profile
하이 이것은 나의 깨지고 부서지는 기록들입니다

0개의 댓글