정리 HTTP 메서드란? GET과 POST의 데이터 흐름에 대하여

Uhan33·2024년 4월 11일
0

TIL

목록 보기
62/72

HTTP 메서드란 클라이언트와 서버 사이에 이루어지는 요청(Request)과 응답(Response) 데이터를 전송하는 방식을 일컫는다.

쉽게 말해 서버가 수행해야 할 동작을 지정하는 요청을 보내는 방법이다.

---메인 요청들---

GET

GET 메서드는 특정 리소스의 표시를 요청한다. GET을 사용하는 요청은 오직 데이터를 받기만 한다.

GET 요청은 멱등성 이라는 개념을 지니고 있어, 여러 번 조회 요청을 하여도 리소스는 변하지 않는다.

POST

POST 메서드는 특정 리소스에 엔티티를 제출할 때 쓰입니다. 이는 종종 서버의 상태의 변화나 부작용을 일으킨다.

GET과 비교하면 데이터가 외부로 노출되지 않으므로 보안상의 이점이 있다.

PUT

PUT 메서드는 목적 리소스 모든 현재 표시를 요청 payload로 바꾼다.

PATCH

PATCH 메서드는 리소스의 부분만을 수정하는 데 쓰인다.

DELETE

DELETE 메서드는 특정 리소스를 삭제한다.

---서브 요청들---

HEAD

HEAD 메서드는 GET 메서드의 요청과 동일한 응답을 요구하지만, 응답 본문을 포함하지 않는다.

CONNECT

CONNECT 메서드는 목적 리소스로 식별되는 서버로의 터널을 맺는다.

OPTIONS

OPTIONS 메서드는 목적 리소스의 통신을 설정하는 데 쓰인다.

TRACE (en-US)

TRACE 메서드는 목적 리소스의 경로를 따라 메시지 loop-back 테스트를 한다.

GET과 POST의 데이터 흐름

GET과 POST에 대해 조금만 더 자세히 보면서 데이터 흐름에 대해 이야기해보자

GET

요청을 전송할 때 필요한 데이터를 Body에 담지 않고, 쿼리스트링을 통해 전송한다.

불필요한 요청을 제한하기 위해 요청이 캐시될 수 있다. GET을 통해 서버에 리소스를 요청할 때 웹 캐시가 요청을 가로채 서버로부터 리소스를 다시 다운로드하는 대신 리소스의 복사본을 반환한다.

GET 요청은 브라우저 히스토리에 남으며, 길이 제한이 있다. 또한 GET요청은 중요한 정보를 다루면 안된다.

GET에는 멱등성이라는 개념이 존재하는데 여러번 요청을 하여도 결과가 달라지지 않는 성질을 말한다.

GET의 데이터 흐름

클라이언트가 웹 브라우저를 통해 웹 페이지를 요청하고,

-> 웹 서버는 클라이언트의 요청을 받아 해당 페이지를 찾는다.

-> 서버는 필요한 데이터를 URL의 쿼리 문자열로 받아 이 요청을 처리하여 클라이언트에게 데이터를 응답해주고,

-> 클라이언트는 서버에서 받은 데이터를 화면에 표시한다.

POST

POST 요청은 리소스를 생성/변경하기 위해 설계되었기 때문에 GET과 달리 전송해야될 데이터를 HTTP메세지의 Body에 담아서 전송한다.

Body는 길이의GET 제한 없이 데이터를 전송할 수 있어 GET과 달리 대용량 데이터를 전송할 수 있다.

내용이 눈에 보이지 않아 안전하다 생각할 수 있지만 개발자 도구로 요청 내용을 확인할 수 있기 때문에 민감한 데이터의 경우는 반드시 암호화해 전송해야 한다.

POST 요청의 경우 캐시되지 않고, 브라우저 히스토리에 남지 않는다.

POST의 데이터 흐름

클라이언트가 웹 브라우저를 통해 웹 페이지를 요청하고,

-> 웹 서버는 클라이언트의 요청을 받아 해당 페이지를 찾는다.

-> 클라이언트가 양식을 작성하여 body에 데이터를 입력한 후 이를 POST요청으로 서버에 전송한다.

-> 서버는 이 요청을 받아 body에서 데이터를 추출하고 처리한다.(필요하다면 DB 등 외부 자원에 접근)

-> 서버는 클라이언트에게 응답을 보내주고, 클라이언트는 받은 응답을 처리한다.

요약

HTTP 메서드는 서버가 수행해야 할 동작을 지정하는 요청을 보내는 방법이다.

주요 요청으로는 GET, POST, PUT, DELETE 등이 있다.

GET은 쿼리스트링을 통해 데이터를 전송하고, 서버의 리소스를 요청한다. 멱등성이라는 개념이 존재한다.

GET요청은 캐시될 수 있고, 데이터가 url에 직접 보여지기 때문에 주의해야한다.

POST는 데이터를 body에 담아서 전송하며, 대용량 데이터까지 전송 가능하다.

서버의 리소스를 생성 또는 변경한다. POST는 캐시되지 않으며, body에 데이터를 숨기기에 안전하게 느껴지지만,

개발자 도구 등에서 body값을 확인할 수 있기에 민감한 데이터는 암호화하여 전송해야 한다.

데이터 흐름의 경우 클라이언트가 서버에 웹 페이지를 요청하는 것 까지는 동일하나,

GET은 URL의 쿼리스트링으로 데이터를 전송하여 서버에 리소스를 요청하고, 받아오지만

POST는 Body에 데이터를 담아 요청하여 서버는 이 데이터를 추출해 생성 또는 변경의 요청을 한다.

그리고 요청에 대한 처리가 모두 끝나면 클라이언트에게 응답을 보내준다.

끗.

0개의 댓글