GiYeong

GET / POST 본문

CS/네트워크

GET / POST

gy2710 2022. 6. 24. 16:25

HTTP 메서드

HTTP 요청에 포함되어 서버가 요청을 수행하기 위해 해야할 행동을 표시하는 용도로 사용한다. (ex. GET, POST, PUT, DELETE ...)

 

GET

서버로부터 정보를 조회하기 위해 설계된 HTTP 메서드이다.

 

요청을 전송할 때, 필요한 데이터를 쿼리스트링을 통해 전송한다.

쿼리스트링(Query String)
URL의 뒤에 입력 데이터를 함께 제공하는 가장 단순한 데이터 전달 방법.
URL주소 뒤에 물음표(?)를 붙이고 'key1=value1&key2=value2...' 와 같은 방식으로 데이터를 요청한다.

특징

  • GET 요청은 캐시가 가능하다. -> js, css, image같은 정적 컨텐츠는 데이터 양이 크고, 변경되는 일이 적기때문에 반복해서 동일한 요청을 보낼 필요가 없다. 정적 컨텐츠를 요청하고나면 브라우저에서는 요청을 캐시해두고, 동일한 요청이 발생할 때 서버로 요청을 보내지 않고 캐시된 데이터를 사용한다.
  • GET 요청을 브라우저 히스토리에 남는다.
  • GET 요청은 북마크 될 수 있다.
  • GET 요청은 길이 제한이 있다. (브라우저마다 다르다.)
  • GET 요청은 파라미터에 노출되기 때문에 중요한 정보를 다루면 안된다.
  • GET 요청은 데이터를 요청할 때만 사용된다.
  • Idempotent(멱등)하게 설계되었다. -> 서버에 동일한 요청을 여러 번 전송하더라도 동일한 응답이 돌아와야 한다.
Idempotent(멱등)
수학이나 전산학에서 연산의 한 성질을 나타내는 것으로, 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질

POST

클라이언트에서 서버로 리소스를 생성하거나 업데이트하기 위해 데이터를 보낼 때 사용되는 HTTP 메서드이다.

 

전송할 데이터를 HTTP 메시지 Body 부분에 담아서 서버로 보낸다. 이때 Body의 타입은 Content-Type 헤더에 따라 결정된다.

 

특징

  • POST 요청은 캐시되지 않는다.
  • POST 요청은 브라우저 히스토리에 남지 않는다.
  • POST 요청은 북마크 되지 않는다.
  • POST 요청은 데이터 길이에 제한이 없다.
  • POST 요청은 데이터가 외부적으로 드러나지 않아 보안이 필요한 부분에 많이 사용한다. -> 하지만 데이터를 암호화하지 않으면 Body의 데이터도 노출될 수 있다.)
  • POST 요청은 서버의 리소스를 새로 생성하거나 업데이트할 때 사용한다.
  • Non-Idempotent하게 설계되었다. -> 서버에 동일한 요청을 여러 번 전송해도 응답은 항상 다를 수 있다.

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

TCP/IP 4 계층  (0) 2022.06.27
OSI 7 계층  (0) 2022.06.27
REST  (0) 2022.06.25
HTTP / HTTPS  (0) 2022.06.24
TCP/UDP  (0) 2022.06.22
Comments