본문 바로가기
  • 주니어 개발자의
    RESTful 성장기
Web/HTTP

[HTTP] GET과 POST의 차이!

by 돌건 2021. 3. 22.

GET과 POST는 모두 자주 사용되는 HTTP Method(서버가 요청을 수행하기 위해 해야 할 행동)이다.

이번 포스팅에서는 이 둘의 차이점에 대해 알아보자!

 

1. GET

- 서버로부터 정보를 조회하기 위해 Idempotent하게 설계된 Method이다.

- 서버에 동일한 요청을 여러 번 전송하더라도 동일한 응답이 돌아와야 한다.

- 주로 데이터를 조회할 때 사용한다.

- 요청을 전송할 때, 필요한 데이터를 Body에 담지 않는다.

- QueryString을 사용해 필요한 데이터를 전달하고, 이에 따라 길이의 제한이 존재한다.

 

https://aaa.com?name=honggildong&id=sample

물음표 이후의 문자열을 QueryString이라 부른다.

- GET은 불필요한 요청을 제거하기 위해 요청이 캐싱될 수 있다. js, css, 이미지와 같은 정적 컨텐츠들은 데이터의 양이 크고 변경될 일이 많지 않아 동일한 요청을 반복할 필요가 없다. 정적 컨텐츠를 요청하게 되면 브라우저에서 요청을 캐싱해두고, 동일한 요청이 들어오면 서버로 요청하지 않고 캐싱된 데이터를 사용한다.

 

2. POST

- 자원을 생성(CREATE), 수정(UPDATE)하기 위해 Non-idempotent하게 설계된 Method이다. (캐싱 X)

- 서버에 동일한 요청을 하더라도 응답이 항상 다를 수 있다.

- Http 메시지의 Body에 데이터를 담아 요청을 전송한다. 

- Http 메세지의 Body는 길이의 제한 없이 데이터를 전송할 수 있다.

- Body안에 데이터를 담아 전송하기 때문에 안전하다고 생각할 수 있지만, 개발자 도구와 같은 툴로 요청 내용을 확인할 수 있기 때문에 숨겨야 하는 데이터의 경우 반드시 암호화해 전송해야 한다.

- POST로 요청을 보내는 경우, Request HeaderContent-Type에 요청 데이터 타입을 알려줘야 한다. 데이터 타입을 명시하지 않으면 서버는 내용이나 URL에 포함된 리소스의 확장자명 등으로 데이터 타입을 유추한다. 알 수 없는 경우에는 application/octet-stream으로 요청을 처리한다.

'Web > HTTP' 카테고리의 다른 글

POST와 PUT  (0) 2021.09.06
HTTP란 무엇인가?  (1) 2021.08.23
[HTTP] Cookie와 Session?!  (0) 2021.03.27
[HTTP] HTTP와 HTTPS의 차이!  (1) 2021.03.22
[HTTP] Mixed Content 이슈와 해결 방법  (0) 2021.03.18

댓글