HTTP GET과 POST의 차이점에 대해 알아보자

HTTP GET vs POST

HTTP ?

간단하게 HTTP에 대해 복습해보자. HTTP는 HyperText Tranfer Protocol로 서버와 클라이언트 사이에 요청과 응답을 주고 받는 프로토콜이다.

1. GET

GET이란?

GET은 클라이언트에서 서버로 어떠한 리소스로부터 정보를 요청하기 위해 사용되는 메서드이다. GET은 오직 데이터를 가져올 때만 사용되며, 수정할 때는 사용되지 않는다.

수정할 수 없기 때문에 안전하다고 간주되고 데이터의 변형 없이 사용할 수 있다.

방식

GET을 통한 요청은 URL 주소 끝에 파라미터로 포함되어 전송되며, query string이라고 부른다.

URL 끝에 ? 을 붙이고 그 다음 변수명 = 값 .. 형식으로 이어 붙인다.

www.yumin.com/show?category1=value1&category2=value2

특징

  • 불필요한 요청을 제한하기 위해 요청이 캐시될 수 있다.
    • 서버에 데이터를 요청할 때, 웹 캐시가 요청을 가로채 서버로부터 리소스를 다시 다운로드하는 대신 리소스의 복사본을 반환한다. HTTP 헤더에서 cache-control 을 통해 캐시 옵션을 지정할 수 있다.
  • 파라미터에 내용이 모두 노출되기 때문에 민감한 정보는 포함하면 안된다.
  • GET 요청은 브라우저에 기록이 남는다.
  • GET 요청을 북마크에 추가할 수 있다.
  • 데이터 길이에 대한 제한이 있다.
  • 요청 성공 시, 200 HTTP 응답 코드를 받는다.
  • 요청한 데이터는 JSON, HTML 등 다양한 형식으로 반환된다.
  • 멱등성이 있다.

2. POST

POST란?

POST는 클라이언트가 서버로 리소스를 생성하거나 업데이트하기 위해 데이터를 보낼 때 사용되는 메서드다.

클라이언트가 서버에 데이터를 전송할 떄, HTTP 메시지의 body 부분에 담아 보낸다. (body의 타입은 content-type에 의해 결정된다.)

특징

  • 데이터 길이에 제한이 없어 용량이 큰 데이터를 보낼 때 사용하거나 보안이 필요한 부분에 많이 사용한다.
  • 캐시되지 않는다.
  • 브라우저에 기록이 남지 않는다.
  • 자원 생성은 201 HTTP 응답 코드를 반환한다.
  • 멱등성이 없다.

멱등성

멱등성이란, 연산을 여러 번 적용해도 결과가 달라지지 않는 성질