HTTP의 Request와 Response

soma·2024년 3월 29일

네트워크

목록 보기
12/12
post-thumbnail

HTTP란?

Hyper Text Transfer Protocol의 약자로 Hyper Text를 웹 브라우저과 서버 간에 하이퍼텍스트를 전송하기 위한 프로토콜이다. 최초에는 텍스트를 주고받는 용도로 설계되었지만, 현재는 이미지, 오디오, 비디오 등 다양한 형식의 데이터를 주고 받을 수 있다.

HTTP는 클라이언트와 서버 간의 통신을 위한 주요 프로토콜로서, 클라이언트가 요청(request)을 보내면 서버는 해당 요청에 대한 응답(response)을 반환한다. 이러한 요청과 응답은 HTTP 또는 HTTPS 프로토콜을 준수하여 통신된다.

따라서 웹 브라우저의 주소 표시줄에 URL을 입력하거나 링크를 클릭하면 HTTP 요청이 발생하고, 서버는 해당 요청에 대한 응답을 반환하여 웹 페이지를 표시한다.

* Protocol이란 통신을 하는 두 주체가 지켜야 하는 통신 규약 

HTTP의 Request와 Response


📝 request와 response란?

request(요청)은 클라이언트가 서버로 전달하는 메시지로, 서버에서 특정 동작을 수행하도록 유도한다. 클라이언트가 서버에게 어떤 작업을 수행해야 하는지를 알리는 것으로, 예를 들어 웹 페이지를 요청하거나 파일을 업로드하는 등의 작업이 포함될 수 있다.

response(응답)은 서버가 요청에 대한 결과를 클라이언트에게 보내는 것이다. 클라이언트가 요청한 작업의 성공 또는 실패, 요청된 데이터의 내용 등을 포함할 수 있다.

웹 브라우저로 특정 페이지에 접속할 때, 해당 페이지의 HTML 파일 뿐만 아니라 이미지, CSS 파일 등 여러 파일을 받아 와야 하기 때문에 반드시 하나 이상의 request-response가 오고 간다.


📝 HTTP 메서드

클라이언트와 서버 간의 통신에서 사용되는 요청 유형을 나타낸다.
각 메서드는 특정한 작업을 수행하도록 설계되어 있으며, 서버는 요청을 수신하고 해당 요청에 따라 적절한 응답을 반환한다.

메서드데이터 처리
GETRead, 기존 데이터 조회
POSTUpdate, 새 데이터 추가
PUTCreate, 기존 데이터 수정
DELETEDelete, 기존 데이터 삭제
PATCHUpdate, 기존 데이터 수정
HEADRead, 기존 데이터 조회

✔ GET

GET 메서드는 서버로부터 데이터를 요청하는 데 사용된다. 서버의 상태를 변경하지 않으며, 요청된 데이터는 URL의 쿼리 문자열에 포함된다.

일반적으로 웹 브라우저에서 링크를 클릭하거나 URL을 입력하여 페이지를 요청할 때 GET 메서드가 사용된다.

* 쿼리 문자열은 URL 끝에 물음표(?)로 시작하며, '&'로 구분되는 여러 개의 키-값 쌍으로 이루어져 있음

✔ POST

POST 메서드는 클라이언트가 서버로 데이터를 제출할 때 사용되며, 이 데이터는 HTTP 요청의 body에 포함되어 전송된다.

사용자가 로그인 양식에 정보를 입력하고 제출하면 해당 정보는 POST 요청으로 서버로 전송되어 로그인을 처리한다. 또는 새로운 게시물을 작성할 때 해당 내용을 POST 요청으로 서버로 제출하여 새로운 게시물을 생성한다.

✔ PUT

PUT 메서드는 클라이언트가 서버에게 리소스를 업데이트하거나 생성할 때 사용되며, 멱등성을 가지고 있어 여러 번 요청해도 안전하게 사용됩니다. 일반적으로 클라이언트가 리소스의 전체적인 표현을 전송하기 때문에 기존 데이터를 완전히 대체한다.

✔ DELETE

DELETE 메서드는 클라이언트가 서버로부터 특정 리소스를 삭제할 때 사용되며, 멱등성을 가지고 있어 여러 번 요청해도 안전하게 사용된다. 일반적으로 요청 본문에 추가 데이터가 필요하지 않으며, 리소스의 식별은 URL에 포함됩니다.

* PUT은 기존 데이터를 완전히 새로운 데이터로 대체하고, PATCH는 새 데이터로 기존 데이터의 일부를 수정하는 메서드
* HEAD 메소드는 GET 메소드와 유사하나 response에서 body는 제외하고, 딱 head 부분만 받는다.
  (실제 데이터가 아니라 데이터에 관한 정보만 얻으려고 하는 상황에 활용한다.)
** 용량이 큰 데이터를 받고자 할 때, request에 HEAD 메서드를 담아 보내고 Content-length로 컨텐츠 크기를 확인할 수 있다.

📝 request의 head와 body

  • 하나의 request는 head와 body로 구성되어 있다.
  • head는 request의 부가 정보를 담고 있는 부분이다.
  • body는 실제 데이터를 담는 부분으로 요청의 본문에 해당한다. 주로 POST나 PUT메서드와 함께 데이터를 전송할 때 사용된다.
  • GET과 DELETE 메서드는 요청에 대한 데이터를 본문에 담지 않는다. 요청 파라미터는 URL의 쿼리 문자열에 포함되므로 별도의 본문이 필요하지 않다.
profile
배움의 기록을 차곡차곡

0개의 댓글