본문 바로가기

Web

HTTP Request 와 Request Methods

학부 때 몇 안 되는 A학점 중에 하나인 인터넷프로그래밍... 그치만 그 내용을 하나도 기억하지 못한다면...?

(생각해보니 커리가 그렇게 좋았던 것 같지는 않다 html js 문법 외운 거 말고 뭘 배웠는지 잘 모르겠네)

 

HTTP

HyperText Transfer Protocol 의 약자다. 새삼 짚고 넘어가는 이유는 http가 본디 transfer protocol이었고, 이 때문에 transfer이 종료되면 연결이 뚝 끊기는 - 두 개의 다른 transfer 간 아무 연결도 없는 -  stateless 함을 지니기 때문에, 쿠키가 필요하다는 얘기를 하고 싶었기 때문이다. 

주로 client (웹브라우저가)와 서버 간 소통이고, 하나하나의 transaction이기 때문에 stream 방식과는 다르다

그럼 대체 무엇을 transfer하냐면, 문서 등을 transfer 한다. 이런 문서의 교환은 서버 - 클라이언트 간에 이루어지기에, 그 일을 수행하는 데에 필요한 method들이 미리 정의되어 있다.

 

잠깐: HTML?

웹 브라우저에서 웹 페이지의 문서가 제대로 보여질 수 있도록 구조를 잡아주는 역할을 한다. (HyperTextMarkupLanguage) 이를테면 "이건 문서의 <head>고 <title>이야" 같은 식. 여기에 레이아웃이나 콘텐츠의 모양새를 잡는 css(cascading style sheet) 이나 javascript, typescript 등 각종 script를 활용해 보완이 가능함. 

 

HTTP Request

클라가 서버에게 리소스를 요청하는 방식을 살펴보려고 한다. 서버가 응답하는 방식은 일단 이번 글에서는 제외. 언젠가 404, 503 등 에러 코드에 대해 정리해보고 싶은(한 주 대충 넘어가고 싶은) 때 해보겠다.

Start line

 

HTTP request는 클라이언트로부터 시작된다. start-line은 세 가지로 구성되는데,

  • HTTP method (GET/PUT/POST나 HEAD/OPTIONS 등): 어떤 액션이 이루어져야 하는가?
  • request target (url)
  • HTTP version
GET https://developer.mozilla.org/en-US/docs/Web/HTTP/Messages HTTP/1.1

Headers

General headers, Request headers, Representation headers 등으로 구성될 수 있는데, HTTP 헤더는 클라이언트와 서버가 request/response로 부가적인 정보를 전송할 수 있도록 해 준다. 보통 fetch가 필요한 리소스나 클라이언트 자체에 대한 정보를 포함한다.

나중에 광고 쪽에서 headerbidding 얘기를 해볼 일이 있을까 싶은데, 그 때 조금 더 자세히 알아보도록 하자.

 

Body

request의 마지막 파트로, GET/HEAD/DELETE/OPTION 과 같이 Fetching 용도의 method는 이 body를 필요로 하지 않는다. HTML form data를 포함하는 POST 등의 요청에는 이 body가 필요하고, 어떤 내용이 업데이트되어야 할지에 대한 정보를 담는다.

 

HTTP Request Methods

HTTP 메소드는 클라이언트가 웹 서버에게 클라이언트 request의 종류와 목적을 알리는 수단이다. 초기 HTTP에서는 GET 메소드 하나였지만, 이후 여러 메소드들이 추가됐다. 일단 오늘의 주인공은 GET과 POST.

한편 Resonse는... response이기 때문에 methods가 없을 것이고. 

 

GET

GET은 특정한 소스로부터 데이터를 요청하는 방식이다. name/value set으로 이루어진 요청이 url의 get 부분을 통해 전달된다.

GET/RegisterStudent.asp?user=value1&pass=value2

guru99.com

Get의 특징으로는 아래와 같은 것들이 있다

  • 민감한 이용자 정보 등은 get을 통해 전달되어서는 안 된다.
  • get은 캐싱될 수 있고, 브라우저 히스토리에 남을 수 있다.
  • 요청 내용의 길이 제한이 있다. (IE가 그랬는데 대부분의 브라우저에선 6만자 정도라 하니 사실상 없다고 봐도 무방하지 않을까..)

POST

POST는 데이터를 서버에 보내는 방식이다. 데이터의 기록, 삭제, 수정 등을 요청하는 데에 사용된다.

GET/RegisterStudent.asp?user=value1&pass=value2

guru99.com

Get과 달리 캐싱되지 않고 브라우저 히스토리에 남지도 않으며, 데이터의 정보 길이 제한도 없다. HTTP 리퀘스트 본문에 데이터가 담기기 때문이다.

 

Get, Post 외에는 간단하게만 알아보는 것으로 한다.

 

PUT

리소스를 대체하되, 없으면 새로 생성한다.

DELETE

리소스를 삭제한다.

PATCH

리소스의 일부를 변경한다. 

HEAD

GET과 동일하지만, http response 중 본문 메시지를 제외하고 상태값과 헤더만 요청한다.

 

 

그 외 OPTIONS, TRACE, CONNECT가 있지만 생략하기로 한다. 

 

참고

 

반응형

'Web' 카테고리의 다른 글

SSP-DSP 간 연동을 중심으로 알아보는 HTTP GET vs POST  (0) 2025.04.29
Cookie 쿠키 와 3rd party cookie  (1) 2022.02.26
Proxy와 Redirect  (1) 2022.02.19