[ 기술 스터디 ] get, post 차이점

김민석·2021년 6월 24일
0

기술 스터디

목록 보기
7/18

GET의 정의

MDN에서 GET method의 정의는 다음과 같다.

HTTP GET 메서드는 특정한 리소스를 가져오도록 요청합니다. GET 요청은 데이터를 가져올 때만 사용해야 합니다.

즉, 서버에 리소스를 '요청'만 할 때 사용한다.


GET 요청 예시

www.example.com/user?name1=value1&name2=value2
라는 페이지가 있으면

  • ?마크는 URL의 끝을 의미한다.
  • 변수 name1value1을, 변수 name2value2를 각각 값으로 가진다.
  • 각각의 변수는 &로 구분된다.

특징

  • 캐싱 가능하다.

    관련 MDN 문서
    일반적으로 브라우저에서 cache가 가능하게 처리한다고 한다.

  • 민감한 데이터를 다루는데 사용되어서는 안된다.
  • 브라우저마다 URL의 길이제한이 있다.
  • 북마크 될 수 있다.

    북마크는 URL로만 이루어져 있기 때문에, body 안에 있는 정보들은 소멸된다. 따라서 엄밀하게 말하자면 POST도 북마크 될 수 있지만, 같은 정보를 담고 있지 못하다.

  • 브라우저 히스토리에 남는다.

    북마크 항목과 같은 맥락의 이야기다. URL 자체에 정보가 남아있기 때문에 정보가 휘발되지 않는다. 그러나 POST는 아니다.



POST의 정의

MDN에서 GET method의 정의는 다음과 같다.

HTTP POST 메서드는 서버로 데이터를 전송합니다. 요청 본문의 유형은 Content-Type 헤더로 나타냅니다.

즉, 서버로 데이터를 전송할 때 사용하게 된다.
(대부분의 경우 서버는 해당 데이터를 이용하여 리소스를 생성/변경 한다.)


특징

  • 데이터의 길이제한이 없다.
  • Body에 담겨 전송되기 때문에 GET에 비해 안전하다.

    그렇지만 body 내용도 브라우저 상에서 노출되기 때문에 민감한 데이터는 반드시 암호화 해야한다.

  • 요청 헤더에 Content-type을 명시 해야한다.

GET vs POST

사용목적형태의 차이는 정의 부분에서 설명되어 있다.
여기에서는 멱등성의 측면에서 설명하고자 한다.

멱등성의 정의

An HTTP method is idempotent if an identical request can be made once or several times in a row with the same effect while leaving the server in the same state.

동일한 요청을 한 번 보내는 것과 여러 번 연속으로 보내는 것이 같은 효과를 지니고, 서버의 상태도 동일하게 남을 때, 해당 HTTP 메서드가 멱등성을 가졌다고 말합니다.

이를 이렇게도 표현할 수 있다.

f(f(x)) = f(x) for any value x

즉, 서버로 요청을 여러번 날리는 행위와 한 번 날리는 행위가 같은 결과를 내면 멱등성이 있다고 할 수 있겠다.


GET

멱등성을 가진다.

GET은 리소스 자체에 어떤 변경도 가하지 않으므로 매 요청마다 같은 정보가 온다.


POST

POST는 리소스를 생성/변경 하도록 설계된 것이기 때문에 요청마다 서버가 변경될 가능성이 있다. 따라서 멱등성을 갖지 않는다.

0개의 댓글