HTTP 요청과 응답 구조는 동일합니다. 요청과 응답은 시작줄(Start Line)과 헤더(Headers)와 바디(Body)로 구성되어 있습니다.
시작줄(Start Line)
모든 Http 메시지는 시작줄(Start Line)으로 시작합니다. 요청 시작줄은 서버가 특정 동작을 취하게끔 만들기 위해 클라이언트에서 전송하는 메시지입니다. 응답 시작줄은 요청에 대한 결과가 어땠는지 알려줍니다.
요청
GET / HTTP/1.1
- 메서드(Method)
- 요청의 제일 처음 나오는 부분으로 서버에 어떤 행동을 하라는 것을 요청 하는 것인지 명시하는 부분입니다. Restful API를 사용한다면 대부분 GET은 읽기, POST는 쓰기, PUT은 업데이트 그리고 DELETE는 삭제를 의미할 것입니다. 그렇지만 이는 서버와의 인터페이스에 따라 달라집니다.
- 요청 URL
- Host 헤더를 기준으로 요청하는 url의 path를 명시하는 부분입니다. 전체 URL, 상대 URL을 사용할 수 있으며 상대 URL을 사용할 경우에는 base URL을 Host 헤더에 명시해주어야합니다.
- HTTP 버전 번호
- HTTP 버전 번호는 요청과 응답에 모두 명시됩니다. 클라이언트 또는 서버가 상대방에게 자신의 HTTP 프로토콜 버전을 알려줌으로써 버전에 따라 사용할 수 있는 기능과 사용하지 못하는 기능을 알려주는 역할을 합니다.
응답
HTTP/1.1 200 OK
- HTTP 버전 번호
- 요청의 HTTP 버전 번호와 동일
- 상태 코드(Status Code)
- 요청의 성공 여부를 알려주는 코드입니다. 클라이언트에게 서버로 요청한 일이 어떻게 마무리되었는지 알려줍니다. 상태코드는 3자리의 숫자로 나타내며 종류는 아래와 같습니다.
- 사유구절(Reason-phrase)
- 숫자로 된 상태 코드를 설명해주는 짧은 문구입니다. 사람이 읽기 위한것으로 상태 코드에 논리적인 영향은 주지 않습니다.
헤더(Header)
헤더 필드는 메시지에 추가적인 정보를 더해줍니다. 헤더는 헤더이름, 콜론(:), 공백(선택적), 값, 엔터(Line Wrrapper)가 순서대로 나타납니다.
요청헤더
요청 메시지에서만 의미를 가지는 헤더입니다. Accept 관련 헤더, 조건부(Condition) 요청 해더, 요청 보안 헤더, 프록시 헤더가 대표적입니다.
응답헤더
응답 메시지에서만 의미를 가지는 헤더입니다. 협상(Negotiation) 헤더, 응답 보안 헤더, 캐시 관련 헤더가 대표적입니다.
일반 헤더
요청 메시지와 응답 메시지에 모두 사용되는 헤더를 말합니다. Connection, Via, Date등의 내용이 담겨 있습니다.
엔터티 헤더
본문(Body)과 관련된 헤더입니다. Body에 대한 정보를 기술하기 때문에 요청과 응답에 모두 올 수 있는 헤더입니다. 콘텐츠 헤더와 캐싱 헤더가 포함됩니다.
바디(Body)
본문은 요청의 마지막 부분에 들어갑니다. 본문은 http 메시지가 가지고 있는 실제 내용입니다. text, json 메시지 뿐만 아니라 이미지, 비디오, HTML 문서 등 다양한 형식이 들어올 수 있습니다. 모든 요청에 본문이 들어가지는 않습니다.
참조
'WEB' 카테고리의 다른 글
SEO(검색 엔진 최적화) (0) | 2022.12.26 |
---|---|
CORS? (0) | 2022.10.09 |
MVC 패턴이란? (0) | 2021.10.15 |
Virtual DOM (0) | 2021.09.02 |