HTTP 메시지
메시지의 흐름
- 메시지의 흐름은 인바운드, 아웃바운드, 용어를 트랜젝션 방향을 표현하기 위해 사용한다.
- 인바운드 : 메시지가 서버로 향하는 것
- 아웃 바운드 : 모든 처리가 끝난 뒤에 메시지가 사용자 에이전트로 돌아오는 것
- HTTP 메시지는 요청 메시지냐 응답 메시지냐에 관계없이 모든 메시지는 다운스트림으로 흐른다.
메시지의 각 부분
- HTTP는 데이터의 구조화된 블록인다.
- 메시지는 요청 메시지와 응답 메시지로 분류된다.
요청 메시지 형식
<메서드><요청 URL><버젼>
<해더>
<엔티티 본문>
메서드 - 클라이언트 측에서 서버가 리소스에 대해 수행해주길 바라는 동작
요청 URL - 완전한 URL 또는 URI의 경로 구성요소다.
버젼 - HTTP/<메이져>.<마이너> 모두 정수이다.
응답 메시지 형식
<버전><상태 코드><사유 구절>
<헤더>
<엔티티 본문>
상태 코드 - 요청 중에 무엇이 일어났는지 설명하는 세 자리의 숫자
사유 구절 - 사람이 이해할 수 있게 설명해주는 짧은 문구로, 상태 코드 이후 부터 줄바꿈 문자열까지 사유구절. 오로지 사람에게 읽히기 위한 목적
헤더 - 이름, 콜론, 선택적인 공백값등 엔티티 본문의 시작을 표시한다.
엔티티 본문 - 임의의 데이터 블록을 포함한다. 헤더나 엔티티 본문이 없더라도 HTTP 헤더의 집합은 항상 빈 줄로 끝나야 함에 주의해야 한다.
시작줄
요청줄
- 모든 HTTP 메시지는 시작줄로 시작한다. 요청 메시지의 시작줄은 무엇을 해야 하는지 알려준다.
응답줄
- 서버에게 리소스에 대해 무언가를 해달라고 부탁한다. 대상을 지칭하는 요청 URL이 들어있다. HTTP버전도 포함한다.
- 응답 메시지는 수행 결과에 대한 상태 정보와 결과 데이터를 클라이언트에게 돌려준다.
메서드
- 시작줄은 메서드로 시작하며, 서버에게 무엇을 해야 하는지 말해준다.
- 메서드는 여러 종류가 있다. GET, HEAD, POST, PUT, TRACE, OPTIONS, DELETE
상태 코드
- 메서드가 서버에게 무엇을 해야 하는지 말해주는것처럼 클라이언트에게 무엇이 일어났는지 말해준다.
- 상태 코드는 응답 메시지의 시작줄에 담겨 반환한다.
헤더
- 헤더 분류 : 해더 명세는 여러 해더 필드를 정의한다. 애플리케이션은 자유롭게 자신만의 헤더를 만들어낼 수 있다.
여러 헤더가 있는데 각 HTTP 헤더는 간단한 문법을 가진다. 이름, 쉼표, 공백, 필드값이 순서대로 온다.
예 > DATE : 서버가 응답을 만들어 낸 시각
Content-length : 데이터를 포함한 엔티티 본문
엔티티 본문
엔티티는 http가 수송하도록 설꼐된 것들이다. 메시지는 이미지, 비디오, html 문서등 여러 종류 디지털 데이터를 실어 나를 수 있다.
메서드
안전한 메서드
GET, HEAD 메서드는 안전하다고 할 수 있는데, 이 메서드는 HTTP 요청의 결과로 서버에 어떤 작용도 없다.
(웹 개발자에게 달렸다)
'개발' 카테고리의 다른 글
layerd jar가 필요한 이유와 적용방법 - docker build 속도개선 (0) | 2020.08.22 |
---|---|
spring cloud stream 적용기 (1) | 2020.01.10 |
http 완벽 가이드 - URL 과 리소스 (0) | 2019.09.08 |
AMQP 프로토콜의 메시지 소비 과정 (0) | 2019.04.24 |
rabbitMq Exchange 라우팅 패턴 (0) | 2019.04.20 |