All Articles

[Web] GET/POST 방식의 특징과 차이점

안녕하세요!

이번 포스팅 에서는 웹 개발자 라면 꼭 알아야 할 개념인 HTTP 통신 함수의 종류 중 GETPOST 방식에 대해 알아 보도록 하겠습니다!😄
개발자 면접을 볼 때 가끔 질문을 받는 내용이여서 정리하게 되었습니다.📙

🗣 참고: 👉🏻경력 개발자 면접 질문 포스팅도 함께 읽으시면 면접 시 도움이 됩니다!🙆🏻‍♀️


1. HTTP란?

  • HTTP(Hyper Text Transfer Protocol)는 웹상에서 클라이언트와 서버 간에 요청/응답으로 데이터를 주고 받을 수 있는 프로토콜입니다.
  • 클라이언트가 HTTP 프로토콜을 통해 서버에게 요청을 보내면 요청에 맞는 응답을 클라이언트에게 전송합니다. HTTP 요청에 포함되는 HTTP 메소드는 서버가 요청을 수행하기 위해 해야할 행동을 표시하는 용도로 사용합니다.
  • 이러한 HTTP 메소드 중 대표 적인GETPOST의 특징과 차이점을 알아보도록 하겠습니다.

(HTTP 통신 웹 브라우저 동작 과정은 👉🏻여기 를 참고해 주세요!)

2. GET 방식 특징

  • GET은 서버로부터 정보를 조회하기 위해 설계된 메소드 입니다.
  • 요청을 전송할 때 필요한 데이터를 Body에 담지 않고, 쿼리 스트링을 통해 전송 합니다. (URL 끝에 ?와 함께 이름과 값으로 쌍을 이루는 요청 파라미터를 쿼리 스트링이라고 합니다.)
  • 만약 요청 파라미터가 여러개 일 경우라면 &으로 연결 합니다. 쿼리스트링을 사용하게 되면 URL에 조회 조건을 표시하기 때문에 특정 페이지를 링크하거나 북마크 할 수 있습니다. (ex. http://localhost:3000/reserve?id=1&date=2021-02-22)
  • GET은 불필요한 요청을 제한하기 위해 요청이 캐시될 수 있습니다.
  • 정적 컨텐츠(js, css, 이미지)는 데이터양이 크고, 변경될 일이 적어서 반복해서 동일한 요청을 보낼 필요가 없습니다. 정적 컨텐츠를 요청하고 나면 브라우저에서는 요청을 캐시해두고, 동일한 요청이 발생할 때 서버로 요청을 보내지 않고 캐시된 데이터를 사용합니다.
  • 프론트엔드 개발을 하다보면 정적 컨텐츠가 캐시돼 컨텐츠를 변경해도 내용이 바뀌지 않는 경우가 종종 발생합니다. 이 때, 브라우저의 캐시를 지워주면 다시 컨텐츠를 조회하기 위해 서버로 요청을 보내게 됩니다.

3. POST 방식 특징

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

4. GET/POST 장단점 및 사용

  • GET 방식(Select)

    • 서버에게 동일한 요청을 여러 번 전송하더라도 동일한 응답이 돌아옵니다. 설계원칙에 따라 서버의 데이터나 상태를 변경시키지 않아야 하기 때문에 주로 조회를 할 때에 사용 합니다.
    • 예를 들어, 브라우저에서 웹페이지를 열어보거나 게시글을 읽는 등 조회를 하는 행위는 GET으로 요청하게 됩니다.
    • (ex. 검색 결과 등 고정적인 주소 및 링크 주소로 사용)
  • POST 방식(Update)

    • 서버에게 동일한 요청을 여러 번 전송해도 응답은 항상 다를 수 있습니다. 이에 따라 POST는 서버의 상태나 데이터를 변경시킬 때 사용됩니다.
    • (ex. 게시글을 쓰면 서버에 게시글이 저장이 되고, 게시글을 삭제하면 해당 데이터가 없어지는 등)
    • POST생성, 수정, 삭제에 사용할 수 있지만, 생성에는 POST, 수정PUT 또는 PATCH, 삭제DELETE가 더 용도에 맞는 메소드라고 할 수 있습니다.
    • POST를 사용하면 정보를 숨길 수 있지만 SSL(Secure Sockets Layer)을 사용 하지 않으면 GET과 마찬가지 입니다.

5. GET/POST 차이점

  • GET과 POST는 이처럼 큰 차이가 있기 때문에 설계 원칙에 따라 적절한 용도로 사용 해야 합니다.
GET POST
URL길이(최대 2048자)는 한계가 있음 해결하고 싶다면 POST 메소드 사용
캐시가 남아있어 전송 속도가 빠름 캐시가 남지 않아 보안적인 면에서 유리
브라우저 히스토리에 파라미터가 남음 히스토리에 파라미터가 저장되지 않음
ASCII 캐릭터만 허용 바이너리 데이터가 허용

오늘 준비한 내용은 여기까지 입니다.
이번 포스팅이 도움이 되셨거나 궁금한 점이 있으시다면 언제든지 댓글을 달아주세요!🙋🏻‍♀️✨