본문 바로가기

개발공부/기술면접준비

[HTTP] HTTP 메서드 - GET메서드와 POST메서드의 차이

GET, POST는 웹 개발에서 다양한 목적으로 사용되는 HTTP 요청 방법 중 두가지이다.
서버에 데이터를 보내는 방법과 서버가 해당 데이터를 처리하는 방법이 다르다.

GET

  • 목적 : GET 메서드는 주로 지정된 리소스에서 데이터를 요청하는데 사용된다.
    이것은 안전한 멱등성(첫번째 수행을 한 뒤 여러 차례 적용해도 결과를 변경시키지 않는 작업 또는 기능의 속성) 작업을 위한 것이다. 즉, 서버에 부작용이 없어야 하며 동일한 GET요청을 여러번 실행해도 다른 결과가 생성되어서는 안된다.
  • URL의 데이터 : GET요청에서 데이터는 쿼리 매개변수로 URL에 추가된다.
    이것은 데이터가 URL에 표시된다는 것을 의미하며 이는 민감한 정보에 대한 보안 문제가 될 수 있다.
  • 캐싱 : GET요청은 일반적으로 웹 브라우저와 프록시 서버에 의해 캐시된다. 즉, 동일한 URL에 대한 이후의 동일한 GET요청이 서버에 전달되지 않고 캐시에서 데이터를 검색하여 자주 액세스하는 리소스의 성능으 향상시킬 수 있다.
  • 북마크 : GET요청은 URL에 표시되므로 쉽게 북마크하고 공유할 수 있어 특정 페이지나 리소스에 액세스 하는데 적합하다.
  • 요청 제한 : GET요청에는 전송할 수 있는 데이터 양에 제한이 있으며 일반적으로 ASCII문자로 제한된다.
    복잡하거나 큰 데이터 페이로드는 GET요청에 적합하지 않는다.

POST

  • 목적 : POST 메서드는 처리할 데이터를 지정된 리소스에 제출하는데 사용된다. 이것은 비멱등성 작업을 위한것으로 즉, 동일한 POST요청을 여러 번 수행하면 각 요청에 대해 새 리소스를 생성하는 등 서버에 다른 영향을 미칠 수 있다.
  • 요청 본문의 데이터 : POST요청에서 데이터는 URL의 일부가 아닌 요청 본문으로 전송된다.
    이를 통해 바이너리 데이터 및 파일을 포함하고 더 크고 복잡한 데이터 페이로드를 전송할 수 있다.
  • 보안 : 데이터가 URL에 표시되지 않기 때문에 POST요청은 민감한 데이터를 보내는 데 더 안전한 것으로 간주된다.
    따라서 로그인, 양식 제출 및 기타 기밀 정보를 처리하는 데 적합한 선택이다.
  • 캐시되지 않음 : POST요청은 일반적으로 엡 브라우저 및 프록시 서버에 의해 캐시되지 않으므로 데이터와 URL이 동일하더라도 각 요청이 서버로 전송된다.
  • 요청 크기 : POST요청은 GET요청보다 잠재적인 데이터 페이로드가 더 크며 동일한 문자 제한에 의해 제한되지 않는다.

정리

GET메서드와 POST메서드의 주요 차이점은 데이터 전송을 처리하는 방법이다.
GET요청은 URL에 데이터를 추가하고 서버에서 데이터를 검색하는 데 적합한 반면에
POST요청은 요청 본문에 데이터를 보내고 처리하기 위해 데이터를 제출하는 데 사용되며 종종 비멱등성 작업 및 민감한 정보가 포함된다.
GET과 POST 중 어떤것을 선택할지는 웹 애플리케이션의 특정 요구사항과 교환되는 데이터의 특성에 따라 달라진다.

캐시(Cache)

웹 개발에서 캐싱은 웹 브라우저, 프록시 서버, 콘텐츠 전송 네트워크(Content Delivery Networks) 등 네트워크 인프라의 여러 지점에 엡 리소스(HTML 페이지, 이미지, 스타일시트, 자바스크립트 파일 등)의 복사본을 저장하는 과정을 의미한다.
캐싱의 목적은 기존에 요구되었던 리소스를 재포착하거나 재계산할 필요성을 줄여 웹 애플리케이션 성능과 효율성을 향상시키는 것이다.
효과적인 캐싱 전략은 웹 사이트 성능을 최적화하고, 서버 부하를 줄이고, 보다 원활한 사용자 경험을 보장하는 데 중요한 역할을 한다.
그러나 개발자는 필요할 때 사용자가 최신 콘텐츠를 수신하고 중요하거나 개인 정보가 실수로 캐시되지 않도록 캐싱을 신중하게 관리해야한다.