«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
Recent Posts
Recent Comments
관리 메뉴

뉴히의 개발 로그

[TIL]20230830 - GET, POST 개념과 방식의 차이점, 데이터 흐름 본문

개발일지/TIL

[TIL]20230830 - GET, POST 개념과 방식의 차이점, 데이터 흐름

뉴히 2023. 8. 30. 15:12

 

  GET 방식의 개념  

GET은 요청하는 데이터가 HTTP URL의 일부로 포함되어 전송됩니다. 일반적으로 조회 작업에 사용됩니다.

  GET 요청  

  • GET은 불필요한 요청을 제한하기 위해 요청이 캐시 될 수 있습니다.
  • 파라미터에 내용이 노출되기 때문에 민감한 데이터를 다룰 때 GET 요청을 사용해서는 안 됩니다.
  • GET 요청은 브라우저 기록에 남습니다.
  • GET 요청을 북마크에 추가할 수 있습니다.
  • GET 요청에는 데이터 길이에 대한 제한이 있습니다.
  • Get 요청은 성공 시, 200(Ok) HTTP 응답 코드를 XML, JSON뿐만 아니라 여러 데이터(html, txt 등..), 여러 형식의 데이터와 함께 반환합니다.
  • GET을 통해 서버에 리소스를 요청할 때 웹 캐시가 요청을 가로채 서버로부터 리소스를 다시 다운로드하는 대신 리소스의 복사본을 반환합니다. HTTP 헤더에서 cache-control 헤더를 통해 캐시 옵션을 지정할 수 있습니다.
  • GET 요청은 idempotent(멱등) 합니다.

  GET 데이터 흐름  

  1. 사용자가 브라우저에서 URL을 입력하거나 링크를 클릭합니다.
  2. 브라우저가 해당 URL에 포함된 파라미터와 함께 서버에 요청을 보냅니다.
  3. 서버가 요청을 처리하고 필요한 정보를 응답으로 보냅니다.
  4. 브라우저가 응답을 받아 사용자에게 표시합니다.

 

  Post  방식의 개념  

POST는 요청 데이터를 HTTP 메시지 본문에 담아 전송하며, 서버의 상태를 변경하거나 데이터를 추가하는 작업에 사용됩니다.

  Post 요청  

  • POST 요청은 캐시 되지 않습니다.
  • POST 요청은 브라우저 기록에 남아 있지 않습니다.
  • POST 요청을 북마크에 추가할 수 없습니다.
  • POST 요청에는 데이터 길이에 대한 제한이 없습니다.
  • Post 요청 중 자원 생성은 201(Created) HTTP 응답 코드를 반환합니다.
  • Post 요청은 idempotent(멱등)하지 않습니다.

  Post  데이터 흐름  

  1. 사용자가 웹 폼에 데이터를 입력하고 제출 버튼을 클릭합니다.
  2. 브라우저가 데이터를 HTTP 본문에 담아 서버에 요청을 전송합니다.
  3. 서버가 요청을 처리하고, 결과를 확인하거나 필요한 정보를 응답으로 보냅니다.
  4. 브라우저가 응답을 받아 사용자에게 표시하거나 다른 동작을 수행합니다.
멱등성|멱등법칙 (idempotent)이란?
idempotent는 멱등법칙(冪等法則) 또는 멱등성(冪等性)이란 뜻으로, 수학이나 전산학에서 연산의 한 성질을 나타내는 것으로, 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미한다.
출처 : 위키백과

즉, 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질!!

  차이점  

GET / POST 는 브라우저가 서버에 요청 하는 것!

GET은 요청을 전송할 때 필요한 데이터를 Body에 담지 않고, 쿼리스트링을 통해 전송.

URL의 끝에 ?와 함께 이름과 값으로 쌍을 이루는 요청 파라미터를 쿼리스트링이라고 부른다.

만약, 요청 파라미터가 여러 개이면 &로 연결.

 

POST는 리소스를 생성/변경하기 위해 설계되었기 때문에 GET과 달리 전송해야될 데이터를 HTTP 메세지의 Body에 담아서 전송.

HTTP 메세지의 Body는 길이의 제한없이 데이터를 전송할 수 있다. 그래서 POST 요청은 GET과 달리 대용량 데이터를 전송할 수 있다. 이처럼 POST는 데이터가 Body로 전송되고 내용이 눈에 보이지 않아 GET보다 보안적인 면에서 안전하다고 생각할 수 있지만, POST 요청도 크롬 개발자 도구, Fiddler와 같은 툴로 요청 내용을 확인할 수 있기 때문에 민감한 데이터의 경우에는 반드시 암호화해 전송해야 한다.

그리고 POST로 요청을 보낼 때는 요청 헤더의 Content-Type에 요청 데이터의 타입을 표시해야 한다.

Content-Type의 종류로는 application/x-www-form-urlencoded, text/plain, multipart/form-data 등이 있다.

데이터 타입을 표시하지 않으면 서버는 내용이나 URL에 포함된 리소스의 확장자명 등으로 데이터 타입을 유추. 만약, 알 수 없는 경우에는 application/octet-stream로 요청을 처리

 

  GET vs POST  

캐시 ⭕️
브라우저 기록 ⭕️
북마크 추가 ⭕️
데이터 길이 제한 ⭕️
HTTP 응답 코드 200(Ok) 201(Created)
언제 주로 사용하는가? 리소스 요청 리소스 생성
리소스 전달 방식 쿼리스트링 HTTP Body
idempotent ⭕️

 

 

https://whales.tistory.com/120

https://brilliantdevelop.tistory.com/33