Http Methods; Get 과 Post 의 차이

박광수·2022년 3월 20일
0

의문의 시작

  • Django를 통해 API를 구현하는 중에 POST로 들어오는 요청을 views.py에서 POST로 받는 것과 GET으로 들어오는 요청을 GET으로 받았을 때 결국 같은 함수를 돌리게 되는 것인데 어떤 차이가 있을까? 하는 의문에서 작성하게 되었다.

  • GET 과 POST 모두 DATA 전달이라는 기능적인 측면에서는 본질적으로 같다고 볼 수 있다.

  • 차이점을 중점으로 각 METHOD의 특징을 나열하면 다음과 같다.

GET METHOD

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

POST METHOD

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

실제로 이러한 차이들을 염두에 두고 더 적절한 요청의 METHOD를 사용해야 할 상황을 겪어보지 않았기 때문에 했던 고민인 것 같다. 아마 실질적으로 프론트분들과 함께 협업을 하여 프로젝트를 진행하거나 실무에 들어가면 당연히 자연스럽게 고민하고 알아가야 했던 것들이지 않았을까 하는 생각이 든다.

참고:
Idempotent 란 여러 번 연산하여도 같은 결과가 나오는 성질을 의미하며, 이 경우 GET METHOD는 동일한 요청을 보냈을 때 동일한 응답이 나오고, POST는 그렇지 않을 수 있음을 뜻한다.

profile
박광수입니다.

0개의 댓글

관련 채용 정보