본문 바로가기
개발자 기술 면접/기타 질문

[기타] GET과 POST의 차이

by se-black 2023. 12. 30.
GET
클라이언트에서 서버로, 어떠한 리소스의 정보를 요청하기 위해 사용되는 메소드입니다.
즉, 서버에서 어떤 데이터를 가져와서 보여줄 때 값이나 내용, 상태 등을 바꾸지 않는 경우에 사용합니다.
  • 요청을 전송할 때, 필요한 데이터를 Body가 아닌 쿼리스트링을 통해 전송합니다. Header(헤더).
  • 중요 정보가 URL에 모두 노출되기 때문에 보안에 취약하다는 단점이 존재합니다.
  • 캐싱이 가능합니다.

 

POST
리소스를 생성/업데이트하기 위해 서버에 데이터를 보내는데 사용되는 메소드입니다.
서버 상의 데이터 값이나 상태를 바꾸기 위해서 사용합니다.
  • GET과 달리 전송할 데이터를 HTTP 메세지의 Body에 담아서 전송합니다. Body(바디).
  • URL에 데이터가 노출되지 않기에 기본적인 보안은 보장됩니다.
  • 캐싱이 불가능합니다.

 

주요 차이점
GET은 불필요한 요청을 제한하기 위해 요청이 캐시될 수 있습니다. CSS, js, 이미지와 같은 정적 콘텐츠는 데이터가 크고, 변경될 일이 적기 때문에 반복해서 동일한 요청을 보낼 필요가 없기 때문입니다.

정적 콘텐츠를 요청하면 브라우저는 요청을 캐시해두고, 동일한 요청이 발생하면 서버로 요청을 보내지 않고 캐시된 데이터를 사용합니다.
→ 그래서 프론트엔드 개발을 하다 보면 정적 콘텐츠를 변경해도 내용이 바뀌지 않는 경우가 발생합니다. 이는 브라우저에 저장된 캐시가 변경되지 않았기 때문인데, 브라우저의 캐시를 지워주면 다시 콘텐츠를 조회하기 위해 서버로 요청을 보내고 변경한 내용이 반영된 것을 확인할 수 있습니다.

 

Cf) 캐시, 캐싱
  • 캐시
    • 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소입니다.
  • 캐싱
    • 캐시 영역으로 데이터(CSS, js, 이미지와 같은 정적 콘텐츠)를 가져와서 접근하는 방식을 말합니다.
728x90

'개발자 기술 면접 > 기타 질문' 카테고리의 다른 글

[기타] 옵저버 패턴  (2) 2023.12.30
[기타] JWT Token이란?  (0) 2023.12.30
[기타] URI와 URL의 차이  (0) 2023.12.30
[기타] HTTP Method란?  (0) 2023.12.30
[기타] 프로세스와 스레드의 차이  (0) 2023.12.30