본문 바로가기
나만 보는 정리노트/ETC

Get vs Post

by SeoKhan 2022. 12. 1.

Get

클라이언트에서 서버로 어떠한 리소스로 부터 정보를 요청하기 위해 사용되는 메서드

  • 데이터를 읽거나(Read), 검색(Retrieve)할 때에 사용되는 method
  • GET은 요청을 전송할 때 URL 주소 끝에 파라미터로 포함되어 전송, 이 부분을 쿼리 스트링(QueryString)이라 한다.
  • 만약, 요청 파라미터가 여러 개이면 &로 연결한다.
  • 오로지 데이터를 읽을 때만 사용되고 수정할 때는 사용하지 않는다.
  • 데이터의 변형의 위험없이 사용할 수 있다는 뜻 == 안전하다고 간주된다.

※ 참고사항

  • GET은 불필요한 요청을 제한하기 위해 요청이 캐시될 수 있다.
  • 파라미터에 내용이 노출되기 때문에 민감한 데이터를 다룰 때 GET 요청을 사용해서는 안 된다.
  • GET 요청은 브라우저 기록에 남는다.
  • GET 요청을 북마크에 추가할 수 있다.
  • GET 요청에는 데이터 길이에 대한 제한이 있다.
  • Get 요청은 성공시, 200(Ok) HTTP 응답 코드를 XML, JSON뿐만 아니라 여러 데이터(html, txt등..),
    여러 형식의 데이터와 함께 반환한다.
  • GET 요청은 idempotent하다.

Post

리소스를 생성/업데이트하기 위해 서버에 데이터를 보내는 데 사용

  • Get과 달리, 전송해야될 데이터를 HTTP 메세지의 Body에 담아서 전송한다.
  • Body의 타입은 요청 헤더의 Content-Type에 요청 데이터의 타입을 표시 따라 결정 된다.
  • HTTP 메세지의 Body는 길이의 제한없이 데이터를 전송할 수 있어서, GET과 달리 대용량 데이터를 전송할 수 있다.
  • POST 요청도 크롬의 개발자 도구Fiddler와 같은 툴로 요청 내용을 확인할 수 있기 때문에
    민감한 데이터의 경우에는 반드시 암호화해 전송해야 한다.

※ 참고사항

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

Get vs Post
Get과 Post 차이점 정리


Idempotent

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

GET은 Idempotent, POST는 Non-idempotent하게 설계되었다.

  • GET으로 서버에게 동일한 요청을 여러 번 전송하더라도 동일한 응답이 돌아와야 한다는 것을 의미,
    주로 조회를 할 때에 사용
  • POST는 Non-idempotent하기 때문에 서버에게 동일한 요청을 여러 번 전송해도 응답은 항상 다를 수 있다.
    이에 따라 POST는 서버의 상태나 데이터를 변경시킬 때 사용

    • 생성에는 POST, 수정은 PUT 또는 PATCH, 삭제는 DELETE 가 더 용도에 맞는 메소드

 

 

 

 

 

Reference
[1] https://velog.io/@songyouhyun/Get%EA%B3%BC-Post%EC%9D%98-%EC%B0%A8%EC%9D%B4%EB%A5%BC-%EC%95%84%EC%8B%9C%EB%82%98%EC%9A%94

'나만 보는 정리노트 > ETC' 카테고리의 다른 글

Labelimg 프로그램 단축키 작동이 안될 때  (0) 2023.04.13
Python f-string  (0) 2022.12.02
REST API  (0) 2022.12.01
/etc/sudoers: syntax error near line ~  (0) 2022.12.01
HTTP Method  (0) 2022.12.01