HTTP
모든 데이터를 전송 가능
- HTML,TXT
- IMAGE, 음성, 영상, 파일
- JSON, XML
- 서버간에 데이터를 주고 받을 때도 대부분 HTTP 사용
HTTP 메시지 구조
* 공백은 무조건 필요함
HTTP 요청 메시지
HTTP 응답 메시지
시작 라인
요청 메시지
- start-line = request-line / status-line
start-line 을 request-line 과 status-line 이 있는데
요청 메시지는 request-line 이라고 부릅니다.
- request-line = method SP(공백) request-target SP HTTP-version CRLF (엔터)
method : GET/POST 등
request-target : 요청하는 대상
HTTP method
- 종류 : GET,POST,PUT,DELETE...
- 서버가 수행해야 할 동작 지정
- GET : 리소스를 달라고 요청하고, 리소스 조회
- POST : 리소스를 줄테니까 작업을 요청, 요청 내역 정리
Request-target
- absolute-path [?query] ( 절대경로 [?쿼리] )
- 절대경로= "/" 로 시작하는 경로
- 참고 : * , http://...?x=y 와 같이 다른 유형의 경로 지정 방법도 있음
[ 예제 ]
GET / search?q=hello&hl=ko HTTP/1.1
Host : www.google.com
응답 메시지
- start-line = request-line / status-line
status-line 에 해당합니다.
- status-line = HTTP-version SP(공백) status-code SP reason-phrase CRLF
- HTTP version
- HTTP status code : 요청 성공, 실패를 나타냄
200 - 성공
400 - 클라이언트 요청 오류
500 - 서버 내부 오류
[ 예제 ]
HTTP 헤더
- header-field = field-name ":" OWS field-value OWS ( OWS : 띄어쓰기를 써도 되고,안해된다. 즉 허용해준다는 뜻 )
- field-name : 대소문자 구분 없음
* 단, [Host SP :] 의 형태는 안됩니다. 즉, 공백을 주의깊게 보고 사용해야합니다.
HTTP 헤더의 용도
- HTTP 전송에 필요한 모든 부가정보 ( 메시지 바디 내용, 메시지 바디 크기, 압축, 인증, 캐시 관리 정보,,, 등등 )
- 표준 헤더가 너무 많음
- 필요시 임의의 헤더 추가 가능
HTTP 메시지 바디의 용도
- 실제 전송할 데이터
- HTML 문서, 이미지, 영상, JSON 등 byte로 표현할 수 있는 모든 데이터 전송 가능
HTTP 정리
- HTTP 메시지에 모든 것을 전송
- HTTP/1.1 을 기준으로 학습
- 클라이언트 서버 구조
- 무상태 프로토콜 ( 스테이스리스 )
- HTTP 메시지
- 단순함, 확장 가능
'HTTP' 카테고리의 다른 글
RestAPI 활용하기 (0) | 2022.08.22 |
---|---|
Message States Server (0) | 2022.08.19 |
HTTP 메서드와 속성 (0) | 2022.08.18 |
HTTP API 설계와 메서드 (0) | 2022.08.14 |
HTTP (0) | 2022.08.03 |