GET과 POST

goodjam92·2023년 3월 21일
0
post-thumbnail

HTTP Method

HTTP Method에는 클라이언트가 서버로 요청을 보내는 방법인 GETPOST 두 가지 방식이 있다.
나의 경우에는 보통 GET 만 주로 사용하였었는데 문득 POST는 언제 쓰는거지??라는 생각이 들었다.
그래서 GETPOST 마치 패트와 매트같은 두 녀석을 알아보도록 하자!
패트와 매트.. 아는 사람이 있다면.. ㅎㅎ

GET

먼저 나에게 익숙한 GET에 대하여 알아보도록 하겠다!

  • GET 요청은 자원에 대한 조회를 요청한다.
  • GET은 요청을 전송 할 때 데이터를 Body가 아닌 HTTP 헤더인 URL주소 끝쪽으로 파라미터가 포함되어 전송 된다.
  • 요청 데이터에 대한 파라미터를 Query String이라고 부른다.

GET 예시

GET 특징

  • 헤더에 데이터를 보내기 때문에 2k 미만의 제한된 양의 데이터만 요청 할 수 있다. (일부 서버는 64k까지 처리)
  • URL에 데이터가 노출된다.

POST

그리고 조금은 생소한 POST에 대해 알아보도록 하자!!

  • POST는 서버의 리소스를 새로 생성하거나 업데이트 할때 사용한다.
  • POST 요청은 데이터를 Body에 담아서 전송한다.
  • Query String에 데이터가 드러나지 않는다.
  • 헤더에 Content-Type에 요청 데이터의 타입을 표시해줘야 한다.

POST 예시

  • JSON 데이터를 API에 게시
    Host: foobar.example
    Content-Type: application/json
    Object- [{name1:value1},{name2:value2}]

GET과 POST 특징 비교

GETPOST
리소스
전달 방식
URL 주소 끝으로 Query StringHTTP Body
브라우저
기록
매개 변수가 웹 브라우저
기록에 남아있다.
매개변수가 웹 브라우저 기록에
저장되지 않는다.
데이터
유형
문자열 데이터 유형만 지원문자열, 숫자, 이진 데이터와 같은
다양한 데이터 유형 지원
보안데이터가 URL의 일부이기 때문에
중요 정보에 대해 안전하지 못하다
데이터가 브라우저 기록이나
웹 서버 로그에 저장되지 않아
GET보다는 안전하다
매개변수URL에 담겨서 보내지기에 2K 미만의
매개변수를 사용하는 것이 안전하며
일부 서버는 최대 64K까지 처리가
가능하다.
파일 업로드를 포함한 매개변수를
서버로 보낼 수 있다.
북마크GET 요청을 북마크 할 수 있다.요청을 북마크 할 수 없다.
데이터
길이 제한
양식 데이터가 URL에 있어 길이가 제한되어 있다.
안전한 길이 제한은 대부분 2048자이지만
브라우저와 웹 서버에따라 다르다
제한 없음
성능URL에 값을 추가하는 단순한 특성으로 인해
POST에 비해 더 좋다.
HTTP 본문에 POST값을 포함시키는데
소요되는 시간으로 인해 GET보다 성능이 낮다.
캐싱대부분 캐싱이 가능하다.대부분 캐싱이 불가능하다.
HTTP
응답 코드
200 (OK)201 (Created)

GET과 POST의 주요 차이점!

1. 사용목적

GET은 서버의 리소스에 데이터의 조회를 요청할 때 POST 서버의 리소스를 새로 생성하거나 업데이트 할 때 사용한다.

2. 요청 메세지에 Body의 유무

  • GET
    요청하는 데이터를 URL에 매개변수를 담아 보내기 때문에 HTTP 메세지에 body가 없다.
  • POST
    body에 데이터를 담아 보내기 때문에 HTTP 메세지에 body가 존재한다.

3. 멱등성 (idempotent)

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

"동일한 요청을 여러번 보내도 같은 효과, 결과를 지닌다."

GET, HEAD, PUT, DELETE 메서드는 멱등성을 가지며 POST는 멱등성을 가지지 않는다.

다시 말하면 GET의 경우 서버에게 동일한 요청을 여러번 전송해도 동일한 응답이 돌아와야 한다는 것을 의미한다. 서버의 데이터나 상태를 변경시키지 않아야 멱등성을 가지므로 주로 조회를 할 때 이 메서드 요청을 사용해야 한다.

반면 POST의 경우에는 멱등성을 띄지 않으므로 서버에게 동일한 요청을 보내는 경우 응답은 매번 다를 수 있기에 서버의 상태나 데이터를 변경시킬 때 사용한다.
POST는 서버의 무언가를 변경되도록 사용되기에 생성, 수정, 삭제 모든 경우에 사용할 수 있지만 각 역할에 대해 알맞은 Method를 사용하는 것이 바람직하다.

끝으로..

GETPOST에 대해 알아보았는데.. GET의 경우에는 내가 진행한 프로젝트에서 URL로 매개 변수를 넘겨주어서 어떠한 동작을 하도록 구현한 적이 있어서 그런지 Query String의 사용법이 친숙하게 느껴졌다. 용어도 이제야 알았지만..
어쨌든 GETPOST의 차이 그리고 어떤 경우에 쓰여야하는지.. 어떤 중요 차이점이 있는지 알게되었으니 추후에 서버로 무언가를 요청해야 할 때 적절하게 사용해야겠다!

.
.
.
.
.
.
.

참고한 자료 🙇🏻
[GURU99] GET Vs Post
[Velog] songyouhyun Get과 Post의 차이를 아시나요?
[CODEBRIDGE] Get vs Post
[tistory] kmyjn HTTP 메소드 중 GET 방식과 POST 방식 차이
[MDN] 멱등성

profile
습관을 들이도록 노력하자!

0개의 댓글