HTTP GET, POST 비교

HTTP?

HyperText Transfer Protocol의 약자로 데이터 전송을 위한 프로토콜이다.

 

프로토콜은 규칙이라는 의미이며 인터넷 상에서 데이터를 주고받기 위한 규칙이라 생각하면 된다.

그렇다면 데이터를 전송하는 방식에는 어떤것이 있을까?

GET

GET방식은 주로 조회 방식에서 사용된다.

 

HTTP메시지의 기본적인구조는 시작라인 - 헤더 - CRLF - 메시지 바디 정도로 볼수 있는데

전하고자 하는 메시지는 주로 메시지 바디에 담아서 보내지만 GET은 그렇지 않다.

 

GET은 URI에 query(쿼리 파라미터, 쿼리스트링)을 통해서 전달하는데

 

https://www.coupang.com/vp/products/1706574195?itemId=2904494807&vendorItemId=70893438435&sourceType=CATEGORY&categoryId=399653&isAddedCart=

 

이런식으로 ? 뒤에 붙은 itemId를 key로 value값을 전달하는 것을 볼 수 있다.

조회 같은 경우 노출되어도 상관없기 때문에 저런식으로 보내는 방법이 선호된다.

또한 GET으로 요청을 보내는 경우 start-line에

 

GET/serach?q=hello&hl=ko HTTP/1.1

이런 형태로 GET방식 임을 나타낸다.

 

POST

POST는 리소스 생성/변경을 위해 사용하며 메시지 바디에 데이터를 담아서 요청한다.

 

GET방식과 다르게 쿼리스트링 형태로 보내지 않는 이유는

로그인 시 아이디 패스워드 처럼 중요 정보가 노출 될 수 있기 때문이다.

 

그렇다고 메시지 바디에 담는다고 보안이 보장되는 것이 아니기때문에 중요정보는 암호화 할 필요가 있다.

 

또한 POST요청시에 헤더 Content-Type에 메시지 형태를 명시해주어야 한다.

  • text/html; charset=utf-8
  • application/json (기본이 utf-8)
  • image/png

처럼 미디어타입과 문자 인코딩방식을 알려주어야 한다.

 

차이

위에서 말했듯이 GET은 조회, POST는 리소스의 생성 및 변경을 위해 사용되기 때문에

같은 요청을 지속해서 보낼시의 결과가 다르다.

 

GET은 단순 조회이기 때문에 동일한 요청시 동일한 결과가 나와야 하며(Idempotent, 멱등)

POST는 수정, 변경을 위해 요청하는 것이기 때문에 결과시에 달라지게 된다.(Non-idempotent)

'CS > 네트워크' 카테고리의 다른 글

[HTTP] 커넥션 관리  (0) 2021.09.17
[HTTP] HTTP 메시지 (메소드, 상태코드, 헤더)  (0) 2021.09.12
[HTTP] URL과 리소스 정리  (0) 2021.09.05
[HTTP] 웹 기초  (0) 2021.09.03
[네트워크] OAuth 2.0이란?  (0) 2021.04.17

+ Recent posts