get, post 차이점

찌끅·2024년 6월 26일

get, post 차이점

get이란?

get은 클라이언트에서 서버로 어떠한 리소스로 부터 정보를 요청하기 위해 사용되는 메서드이다. 예를들어 게시판의 게시물을 조회할 때 쓸 수 있다.
get을 통한 요청은 URL 주소 끝에 파라미터로 포함되어 전소되며, 이 부분을 쿼리 스트링(query string)이라고 부른다.
방식은 URL 끝에 "?"를 붙이고 그 다음 변수면1=값1&변수명2=값2... 형식으로 이어 붙이면 된다.

get의 특징

  • get 요청은 캐시가 가능하다.
    : get을 통ㅇ해 서버에 리소스를 요청할 때 웹 캐시가 요청을 가로채 서버로부터 리소스를 다시 다운로드하는 대신 리소스의 복사본을 반환한다. HTTP 헤더에서 cache-control 헤더를 통해 캐시 옵션을 지정할 수 있다.
  • get 요청은 브라우저 히스토리에 남는다.
  • get 요청은 북마크 될 수 있다.
  • get 요청은 길이 제한이 있다.
    : get 요청의 길이 제한은 표준이 따로 있는 건 아니고 브라우저마다 제한이 다르다고 한다.
  • get 요청은 중요한 정보를 다루면 안된다.(보안)
    : get 요청은 파라미터에서 다 노출ㄹ되어 버리기 때문에 최소한의 보안 의식이라고 생각하면 된다.
  • get은 데이터를 요청할 때만 사용된다.

post란?

post는 클라이언트에서 서버로 리소스를 생성하거나 업데이트하기 위해 데이터를 보낼 때 사용되는 메서드이다. 예를들면 게시판에 게시글을 작성하는 작업 등을 할 때 사용된다.
post는 전송할 데이터를 HTTP 메시지 body 부분에 담아서 서버로 보낸다.
post로 데이터를 전송할 때 길이 제한이 따로 없어 용량이 큰 데이터를 보낼 때 사용하거나 get처럼 데이터가 외부적으로 드러나는 건 아니라서 보안이 필요한 부분에 많이 사용된다.

post의 특징

  • post 요청은 캐시되지 않는다.
  • post 요청은 브라우저 히스토리에 남지 않는다.
  • post 요청은 북마크 되지 않는다.
  • post 요청은 데이터 길이에 제한이 없다.

get과 post의 차이점

  • 사용목적: get은 서버의 리소스에서 데이터를 요청할 때, post는 서버의 리소스를 새로 생성하거나 업데이트할 때 사용한다.
    DB로 따지면 get은 select에 가깝고, post는 create에 가깝다고 보면된다.
  • 요청에 body 의무: get은 URL 파라미터에 요청하는 데이터를 담아 보내기 때문에 HTTP 메시지에 body가 없다. post는 body에 데이터를 담아 보내기 때문에 당연히 HTTP 메시지에 body가 존재한다.
  • 멱등성(idempotent): get 요청은 멱등이며, post 요청은 멱등이 아니다.

*멱등이란?
멱등의 사전적 정의는 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미한다. get은 리소스를 조회한다는 점에서 여러 번 요청하더라도 응답이 똑같을 것이다. 반대로 post는 리소스를 새로 생성하거나 업데이트할 때 사용되기 떄문에 멱등이 아니라고 볼 수 있다.

0개의 댓글