WEB/HTTP
HTTP 구조 정리 - 삽질중인 개발자
개발 N년차
2020. 12. 24. 23:52
반응형
- 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
- 요청에 대한 응답 값
반응형