본문 바로가기

WEB/HTTP

HTTP 구조 정리 - 삽질중인 개발자

반응형

- HTTP 구조 정리 - 

 

개발을 하게 된다면 외부 API를 사용해야하는 경우가 많이있다.

Rest API는 HTTP 구조로 되어 있어 HTTP 구조에 대해서 모르면 삽질을 많이 할 수 도 있어서 정리한다.

 

1. HTTP란

  • HyperText Transfer Protocol 의 약자
  • 하이퍼텍스트(HTML) 문서를 교환하기 위해 만들어진 통신 규약
  • 서버간 네트워크 통신시 어떠한 형식으로 통신할지에 대해 정해둔 규약

2. HTTP 메세지 기본 구조

기본적인 HTTP의 구조는 아래와 같다.

시작 라인

  • Response인지 Request 인지에 따라 약간 형태가 다르다.

헤더

  • header-field: field-value 으로 구성되어 있다.
  • HTTP 전송에 필요한 모든 부가정보를 가지고 있다.

메시지 본문

  • 메세지의 본문을 담고 있다.

 

HTTP의 구조를 확인 하고 싶으면 CURL을 통해서 다음 커맨드를 치면

curl -v www.google.co.kr?query=http구조

다음과 같은 로그가 출력이 된다.

 

2.1 HTTP Request 구조

CURL로 요청을 보낸 "www.google.co.kr/?query=http구조" 의 HTTP Request 의 구조이다.

start line

  • HTTP Method - 요청시 보내는 HTTP 메소드 형태이다. (GET, POST, PUT, PATCH, DELETE, 기타)
  • Request Target - 어디로 보내는지에 대한 URI 이다.
  • HTTP Version - HTTP 버젼으로 현재까지는 대부분이 HTTP/1.1이고 HTTP/2, HTTP/3 까지도 있다.

header

 

  • Host - 호스트 URL 이다.
  • User-Agent - 클라이언트 정보다.
  • Accept - 서버에서 해당 타입에 데이터를 보내달라고 요청하는 헤더이다.
  • Authorization - JWT 같은 인증 토큰을 서버로 보낼 때 사용하는 헤더이다.
  • 기타 등등

 

위의 HTTP Method는 GET 방식이라 Body 부분은 따로 존재 하지 않지만 GET이 아닌 다른 메소드의 경우 Body가 존재한다. ( GET 도 Body가 있는 경우가 있는데 GET방식의 Body를 못받는 서버가 있어 권장하는 방법이 아님 )

 

 

 

2.2 HTTP Response 구조

위에서 요청한 요청의 HTTP Response 의 구조이다.

기본적인 HTTP 의 구조는 동일하지만 담겨오는 정보가 약간 다르다.

 

 

start line

  • HTTP Version - 응답온 메세지의 HTTP 버젼 정보이다.
  • Status Code - 응답 코드이다.
  • Status text - 응답 상태이다.

header

  • Date - 응답온 일시이다.
  • Content-Type - 응답 데이터의 타입이다.
  • Cache-Control - 캐시용 헤더이다.
  • 기타 등등

body

  • 요청에 대한 응답 값

 

반응형