CS 지식/네트워크

HTTP 구조

naksnaks 2023. 3. 6.
반응형

HTTP 메세지 기본 구조

HTTP request 메세지는 크게 3부분으로 구성됩니다.

  • Start line
  • headers
  • bodyHTTP Request 구조

Start line

ex) GET /find HTTP/1.1

  • HTTP Method
    • 해당 request가 의도한 action을 정의하는 부분 (ex GET)
    • GET, POST, PUT, PATCH, DELETE, OPTIONS 등이 있습니다.
  • Request target
    • 해당 request가 전송되는 목표 uri (ex /find)
  • HTTP Version
    • HTTP 버전 (ex 1.1)

Headers

ex)

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

  • 해당 request에 대한 추가 정보를 담고 있는 부분
  • Key : Value 값으로 되어있습니다.
  • 자주 사용되는 Header
    • Host
      • 요청이 전송되는 target의 host url (ex google.com)
    • User-Agent
      • 요청을 보내는 클라이언트에 대한 정보 (ex 웹 브라우저에 대한 정보)
    • Accept
      • 해당 요청이 받을 수 있는 응답 타입 (ex application/json , */*)
    • Connection
      • 해당 요청이 끝난후에 클라이언트와 서버가 계속해서 네트워크 커넥션을 유지할지, 끊을지에 대해 지시하는 부분 (ex keep-alive)
    • Content-Type
      • 해당 요청이 보내는 메세지 body의 타입 (ex application/json)
    • Content-Length
      • 메세지 body의 길이

Body

  • 해당 request의 실제 메세지(내용)
  • Body가 없는 request도 존재 (ex GET은 대부분 body가 없음)

ex

 {
        "id": "testId",
        "password": "testPassword"
 }

HTTP Response 구조

Status line

  • Response의 상태를 간략히 나타내는 부분
  • 3가지 부분으로 구성
    • HTTP 버전
    • Status Code : 응답 상태 코드, 숫자로 된 코드 (ex 200)
    • Status text : 응답 상태를 간략히 설명해주는 부분 (ex Not Found)

Headers

  • Request의 header와 거의 동일 (Response에서만 사용되는 header가 존재 (ex User-Agent 대신 Server 헤더 사용))

Body

  • Request의 body와 거의 동일
  • 데이터를 전송할 필요가 없으면 body는 비어있습니다.

HTTP Methods

GET

  • 어떠한 데이터를 서버로부터 받을 때 주로 사용
  • 가장 간단하고 많이 쓰이는 Method
  • 보통 데이터를 받아오기만 하므로 Request에 body를 안보내는 경우가 많습니다.

POST

  • 데이터를 생성/수정/삭제 할 때 주로 사용

PUT

  • 데이터를 생성 or 수정할 때 사용
  • 데이터 수정 시 자원의 전체가 아닌 일부만 전달할 경우,, 전달한 필드 외 모두 null or 초기값 처리

PATCH

  • 데이터를 수정할 때 사용
  • 데이터 수정 시 자원의 부분 교체

DELETE

  • 특정 데이터를 서버에서 삭제 할 때 사용

OPTIONS

  • 요청 URI에서 사용할 수 있는 Method를 받아올 때 사용
  • ex) /update uri에서 어떤 method를 요청이 가능한가 (GET이냐 POST냐)를 알기위해 사용

출처
딸바보아재님 - [http method] put vs patch
teddybearjung님 - HTTP 구조 및 핵심 요소
삽질중인 개발자 - HTTP 구조 정리

반응형

'CS 지식 > 네트워크' 카테고리의 다른 글

브라우저에 URL을 입력했을 때의 과정  (0) 2023.03.09
HTTP 버전  (0) 2023.03.06
HTTP와 HTTPS란?  (0) 2023.03.02
TCP와 UDP  (0) 2023.02.27
OSI 7계층이란?  (0) 2023.02.27

댓글

💲 추천 글