GET, POST 방식

ㄷr r요·2023년 12월 21일
0

GET, POST 방식의 차이점에 대해서 설명해주세요.

사용목적 : GET은 서버의 리소스에서 데이터를 요청할 때,
POST는 서버의 리소스를 새로 생성하거나 업데이트할 때 사용한다.
DB로 따지면 GET은 SELECT 에 가깝고, POST는 Create 에 가깝다고 보면 된다.

요청에 body 유무 : GET은 URL 파라미터에
요청하는 데이터를 담아 보내기 때문에 HTTP 메시지에 body가 없다.
POST는 body 에 데이터를 담아 보내기 때문에 당연히 HTTP 메시지에 body가 존재한다.

멱등성 (idempotent) : GET 요청은 멱등이며, POST는 멱등이 아니다.

멱등이란?

멱등의 사전적 정의는 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미한다.
GET은 리소스를 조회한다는 점에서 여러 번 요청하더라도 응답이 똑같을 것 이다.
반대로 POST는 리소스를 새로 생성하거나 업데이트할 때 사용되기 때문에
멱등이 아니라고 볼 수 있다. (POST 요청이 발생하면 서버가 변경될 수 있다.)

GET과 POST는 이런 차이들이 있기 때문에 사용하려는 목적에 맞게 사용해야한다.

GET, POST의 개념과 함께 데이터 흐름에 대해서 설명해주세요.

GET과 POST는 HTTP 메서드로 클라이언트에서 서버로 무언가를 요청할 때 사용한다. 
GET은 클라이언트가 서버에 어떠한 리소스로부터 정보를 요청하기 위해 사용되는 메서드이다. 
예를들면 게시판의 게시물을 조회할 때 쓸 수 있다.

POST는 클라이언트에서 서버로 리소스를 생성하거나
업데이트하기 위해 데이터를 보낼 때 사용 되는 메서드다.
예를들면 게시판에 게시글을 작성하는 작업 등에 사용된다.

GET의 특징

  • GET 요청은 캐시가 가능하다. 
    : GET을 통해 서버에 리소스를 요청할 때 웹 캐시가 요청을 가로채 서버로부터 리소스를 다시 다운로드하는 대신 리소스의 복사본을 반환한다. HTTP 헤더에서 cache-control 헤더를 통해 캐시 옵션을 지정할 수 있다.

  • GET 요청은 브라우저 히스토리에 남는다.

  • GET 요청은 길이 제한이 있다.
    : GET 요청의 길이 제한은 표준이 따로 있는건 아니고 브라우저마다 제한이 다르다고 한다. 

  • GET 요청은 중요한 정보를 다루면 안된다. ( 보안 )
    : GET 요청은 파라미터에 다 노출되어 버리기 때문에 최소한의 보안 의식이라 생각하자.

  • GET은 데이터를 요청할 때만 사용 된다.

  • 데이터 흐름:
    클라이언트가 웹 브라우저를 통해 웹 페이지를 요청한다.
    웹 서버는 클라이언트의 요청을 받고 해당 페이지를 찾는다.
    서버는 필요한 데이터를 URL의 쿼리 문자열로 받고, 이 요청을 처리하여 클라이언트에게 데이터를 응답한다.
    클라이언트는 서버에서 받은 데이터를 화면에 표시한다.

POST의 특징

  • POST 요청은 캐시되지 않는다.

  • POST 요청은 브라우저 히스토리에 남지 않는다.

  • POST 요청은 북마크 되지 않는다.

  • POST 요청은 데이터 길이에 제한이 없다.

  • 데이터 흐름:
    클라이언트가 웹 브라우저를 통해 웹 페이지를 요청한다.
    웹 서버는 클라이언트의 요청을 받고 해당 페이지를 찾는다.
    클라이언트가 양식(form)을 작성하고 데이터를 입력한 후, 이 데이터를 POST 요청으로 서버에 전송한다.
    서버는 POST 요청을 받아들이고, 요청 본문에서 데이터를 추출하고 처리한다.
    서버는 클라이언트에게 응답을 보내고, 클라이언트는 서버에서 받은 응답을 처리한다.

profile
개발 공부

0개의 댓글