HTTP Method GET / POST

현수·2022년 4월 22일
0

면접준비

목록 보기
4/10

GET은 데이터를 조회하기 사용되는 메서드로 요청을 전송할 때 데이터를 쿼리스트링에 담아 요청한다. 따라서 데이터가 노출되기 때문에 중요한 데이터의 전송할 때에는 사용하기 어렵다. 또한 GET은 멱등성을 보장받아 웹브라우저는 캐시데이터에 응답을 미리 기록해둘 수 있다.

POST의 경우 리소스를 생성/변경하기 위해 사용되는 메서드로 전송해야할 데이터를 HTTP 메시지의 Body에 담아 전송한다. Body는 큰 데이터를 전송할 수 있어 대용량 데이터 전송에 적합하며, GET에 비해 보안적인 면에서 유리하나, 역시나 암호화는 필요하다. POST는 GET과 달리 멱등성을 완전히 보장받는다고 할 수는 없다.



GET

  • 서버의 리소스를 클라이언트로 요청하기 위해 사용한다. 즉, 데이터를 조회하기 위해 사용되는 메서드.

  • GET을 통한 요청을 할 때 데이터는 URL 주소 끝에 파라미터로 담아 전송하며, 이 부분을 쿼리 스트링(query string) 이라고 부른다.

    • URL 끝에 "?" 를 붙이고 그다음 변수명1=값1&변수명2=값2... 형식으로 이어붙여 보낸다.
    • 쿼리 스트링으로 데이터가 노출되기 때문에 중요한 데이터를 전송해야 하는 경우에는 GET을 사용해서는 안된다.
    • URL 주소 끝에 담아 보내기 때문에 보낼 수 있는 데이터가 한정적이다.
  • GET은 멱등성을 보장받는다.

    • 멱등성 : 동일한 요청을 한 번 보내는 것과 여러 번 연속으로 보내는 것이 같은 효과를 지니고, 서버의 상태도 동일하게 남을 때, 해당 HTTP 메서드가 멱등성을 가졌다고 말한다.
    • GET은 데이터를 요청만 하기 때문에 서버에 영향을 주지 않으며, 그에 맞는 응답을 받기만 하면 되기 때문에 웹브라우저는 캐시데이터에 응답을 미리 기록해둘 수도 있다.(캐싱 가능)


Post

  • 서버의 리소스를 생성/변경하기 위해서 설계된 메서드.
    • 클라이언트가 전송한 데이터가 서버로 전달되어 영향을 미친다.

  • 전송하는 데이터는 HTTP Message의 Body에 담아 전송한다. Body는 큰 데이터를 전송할 수 있어 대용량 데이터 전송에 적합하다.
    • GET과 같이 쿼리 스트링으로 정보가 드러나지 않아 보안적인 면에서 보다 우수하지만, 암호화가 적용되지 않는다면 POST 요청 또한 보안에 취약할 수 있다.


GET vs Post

  • GET은 리소스를 조회하기 위해, POST는 리소스를 생성 및 변경하기 위해 사용한다.
  • GET은 멱등성을 보장받고 Post는 보장받지 않는다.
    • 따라서 GET은 캐싱이 가능하다.
  • GET은 요청 시 보내는 데이터를 헤더에 담고, POST는 Body에 담아 보낸다.
    • 따라서 POST보다 GET이 보안에 취약하다.
  • GET에 비해 POST가 더 많은 데이터를 보낼 수 있다.


profile
언젠간 되겠지!

0개의 댓글