CS/Network

HTTP [HTTP Request]

Hamp 2024. 9. 17. 21:55
반응형

 

HTTP 메시지 종류 

  1. HTTP Request
    • 클라이언트가 서버로 전달해서 서버의 액션이 일어나게끔 하는 요청
  2. HTTP Response
    • 요청에 대한 서버의 답변

 

이번 학습은 Request를 중심으로 살펴보자.

 


구성요소

a. start line

HTTP Request Message의 시작 라인

HTTP request start line 3가지 부분으로 구성

 

GET /test.html HTTP/1.1
[HTTP Method] [Request target] [HTTP version]

 

Request target

HTTP Request가 전송되는 목표 주소

 

HTTP version

말그대로 HTTP의 version이다.
version에 따라 request 메시지 구조나 데이터가 다를 수 있어 version을 명시힌다.

HTTP method

HTTP Request 의도를 담고있다.

 

메서드 종류 목적
GET GET 메서드는 특정 리소스의 표시를 요청합니다. GET을 사용하는 요청은 오직 데이터를 받기만 합니다.
HEAD HEAD 메서드는 GET 메서드의 요청과 동일한하나 메시지 부분(Body)를 제외하고 상태 줄과 헤더만 반환
POST POST 메서드는 특정 리소스에 엔티티를 제출할 때 쓰입니다
PUT PUT 메서드는 리소스 덮어쓰기 (해당 리소스가 없으면 생성)
PATCH PATCH 소스의 부분만을 수정하는 데 쓰입니다.
DELETE DELETE 메서드는 특정 리소스를 삭제합니다.
CONNECT CONNECT 메서드는 목적 리소스로 식별되는 서버로의 터널을 맺습니다.
OPTIONS OPTIONS 메서드는 목적 리소스의 통신을 설정하는 데 쓰입니다.
TRACE TRACE 메서드는 목적 리소스의 경로를 따라 메시지 loop-back 테스트를 합니다.

 

HTTP 메서드는 다음과 같은 특징을 갖는다.

 

  1. Safe
    • Safe한 메서드는 “호출해도 리소스를 변경하지 않는다”는 특징
  2. Indempotent
    • 한 번 호출하든 여러번을 호출하든 결과는 똑같은 메서드가 멱등성을 갖는다.
  3. Cacheable
    • 응답 결과를 서버에 캐싱해서 사용해도 되는 메소드를 의미한다.
    • 대부분 GET, HEAD 정도만 캐시하여 사용한다.


b. headers

HTTP 헤더는 클라이언트와 서버가 요청 또는 응답으로 부가적인 정보 전송할 있도록 해준다.
HTTP
헤더는 대소문자를 구분하지 않는 이름과 콜론 ':' 다음에 오는 ( 바꿈 없이)으로 이루어져있다

 

  • General headers : 요청 및 응답 메시지 모두에서 사용 가능한 일반 목적의 헤더 항목이다.
  • Request headers : Request Message에서만 나타납니다. 요청을 구체화 시키거나, context 제공, 또는
    제약사항 등이 기재된다.
  • Entity headers : Reqest, Response에서 모두 사용 가능한 Entity(콘텐츠, 본문, 리소스 ) 대한 설명 부분 
    만약 본문내용이 없는 요청이라면 Entity 헤더는 전송되지 않는다.

 

  1. User-Agent [request header]
    • HTTP 요청을 보내는 디바이스와 브라우저 등 사용자 소프트웨어의 식별 정보
    • Mozilla 정보/버전 + 운영체제 정보 + 렌더링 엔진 정보 + 브라우저
    •  정보를 통해 서버는 클라이언트 프로그램(브라우저)에 맞는 최적의 데이터를 보내줄  있다.
  2. Accept [request header]
    • 클라이언트가 웹서버로부터 받을 Response로 받을 타입 , 내가 받아 볼 데이터 타입을 알려줌
  3. Content-Type  [Entity header]
    • 클라이언트가 웹서버에게 보낼 데이터 타입
  4. Content-Length [Entity header]
    • 보낼 데이터의 크기
  5. Authorization [request header]
    • 인증 토큰을 서버로 보낼 쓰이는 Header

c. body

HTTP Request가 전송하는 데이터를 담고 있는 부분 전송하는 데이터가 없다면 body 부분은 비어있다.

보통 post 요청일 경우, HTML 폼 데이터가 포함되어 있다.

 

위에서 말한 헤더 두 개(Content-Type와 Content-Length)로 정의된 단일 파일로 본문으로 종류는 다음과 같다.

단일-리소스 본문 과 다중-리소스 본문으로 나눌 수 있다.

  • 단일-리소스 본문 : 헤더 두개 [Content-type, Content-Length] 로 이루어진 단일 파일
  • 다중-리소스 본문 : 파트 마다 다른 정보를 담은 본문(HTML관련)

보통 다음과 같이 보여진다.

POST /test HTTP/1.1

Accept: application/json
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 83
Content-Type: application/json
Host: google.com
User-Agent: HTTPie/0.9.3

{
    "test_id": "tmp_1234567",
    "order_id": "8237352"
}

 

 


참고

 

 

[간단정리] HTTP Request/Response 구조

개요 HTTP Request(요청)/Response(응답) 구조 알아보기 HTTP HyperText Transfer Protocol 하이퍼텍스트(HTML) 문서를 교환하기 위해 만들어진 protocol(통신 규약). 즉 웹상에서 네트워크로 서버끼리 통신을 할때

hahahoho5915.tistory.com

 

 

반응형