HTTP 헤더 개요
복습

- HTTP 헤더 필드는 필드 네임 그리고 ":"가 오고 그다음 한칸을 띄우고 필드 value가 올수있다.보통 이렇게 사용된다!
- 필드네임은 대소문자 구분없다!!
HTTP헤더 용도
- HTTP 전송에 필요한 모든 부가정보
- 예) 메시지 바디의 내용 , 메시지 바디의 크기 , 압축 , 인증 , 요청 클라이언트 , 서버 정보 , 캐시 관리 정보...
- 표준 헤더가 너무 많다!
- 필요시 임의의 헤더 추가 가능

- 헤더 분류
- General 헤더 : 메시지 전체에 적용되는 정보 예) Connection : close 메시지 전체에 적용되는 정보 등
- Request 헤더 : 요청 정보 예) User-Agent : Mozila/5.0 (Macintosh;..) 요청을 보낼때 들어가는 헤더 등
- Response 헤더 : 응답 정보 예) Server:Apache 현재 요청을 받아서 처리하는 서버 정보 등
- Entity 헤더 : 엔티티 바디 정보 예) Content-Type:text/html , Content-Length: 3432 실제 메시지 바디에 들어간 내용과 관련된 내용 html인지 json인지 컨텐츠 길이가 어느정도인지 등

- 메시지 본문(message body) 은 엔티티 본문(entity body)을 전달하는데 사용
- 엔티티 본문은 요청이나 응답에서 전달할 실제 데이터 ( 메시지 본문안에 entity본문을 담아서 전달한다 )
- 엔티티 헤더는 엔티티 본문의 데이터를 해설할 수 있는 정보 제공
- 데이터 유형(html,json), 데이터 길이 , 압축 정보 등등
하지만 1999년도에 RFC-2616버전이 나오고 그 안에 Entity Header 와 같은 내용이 많이 들어가 있지만 폐기가 된다. 그 이유는 2014년 RFC-7230에서 7235로 스펙이 쪼개지면서 많이 개정이 된다. 그러면서 Entity Body라는 용어가 사라진다.
RFC723x 변화
- 엔티티(Entity) -> 표현(Representation)
- Representation = representation Metadata + Representation Data
- 표현 = 표현 메타데이터 + 표현 데이터

- 메시지 본문 (message body)를 통해 표현 데이터 전달
- 메시지 본문 = 페이로드 (payload)
- 표현은 요청이나 응답에서 전달할 실제 데이터 ( 표현헤더+표현 데이터 = 표현 )
- 표현 헤더는 표현 데이터 를 해석할 수 있는 정보 제공
- 데이터 유형(html,json),데이터 길이 , 압축 정보 등등
- 참고 : 표현 헤더는 표현 메타데이터와 페이로드 메시지를 구분해야하지만 , 너무 복잡해지는 과정이 있어 생략이 된다.
왜 표현이라고 말을 할까??
예를들어 회원과 관련된 회원 조회 내역을 html로 제공을 해준다고 치자
그것은 회원이라는 리소스를 html로 표현한거다.
또 예를 들어 회원 데이터가 DB인데 이걸 JSON으로 조회를 한다고 치자
회원이라는 리소스를 실제 데이터가 HTTP에서 전송이 될때는 HTML로 될수도 JSON으로 표현이 될수도있다. 즉 회원이라는 리소스를 HTML로 표현할수도 JSON으로 표현할수도 있다. 그래서 실제 전달하는것을 표현이라고 명확하게 용어를 정리한것이다.
표현에 representation의 r이 rest할때 r이다!!