HTTP(Hyper Text Transfer Protocol)
하이퍼 텍스트 : 하이퍼 링크로 논리적으로 연결된 문서(eg HTML)
HTTP통신의 특징
HTTP통신 : 요청과 응답(Request and Response)
과정
웹브라우저 -> 주소 입력 -> 요청 -> 웹 서버 -> 응답 -> 웹 브라우저
URL
리소스의 위치 : URL(Uniform Resouce Locator)
HTTP 메세지 구조
요청메세지
요청 라인
요청 헤더
요청 바디(엔티티)
요청 라인
요청 메소드
요청 URL
HTTP버전
HTTP메소드 : 리소스를 다루는 행위
GET : 리소스를 얻어오는 요청
POST : 리소스 전송 요청
PUT : 저장 요청(수정)
DELETE : 삭제
요청 헤더
헤더는 키 : 값 방식으로 작성
주요 요청 헤더
Accept : 클라이언트가 받을 수 있는 콘텐츠
Cookie : 쿠키
Content-Type : 메세지 바디(엔티티)의 종류(eg json )
Content-Length : 메세지 바디 길이
If-Modified-Since : 특정 날짜 이후 변경됐을 때만
요청 정보 전달
URL을 이용해서 요청 정보전달 : GET메소드, TRACE 메소드
경로와 쿼리 스트링 사용
메세지 바디를 사용하지 않음
URLEncoded방식
메세지 헤더(컨텐츠 타입) : application/x-www-form-urlencoded
메세지 바디 : 쿼리 문자열
메세지 예)
Content-Type : application/x-www-form-urlencoded
title=sdnfi&Director=George+Miller
Content-TYpe : application/json
{
"name" : "gak",
"age" : "34"
}
멀티파트를 이용한 요청 정보 전달
바이너리 파일을 올리는 경우 주로 사용
하나의 메세지 바디에 파트를 나눠서 작성
메세지 헤더
컨텐츠 타입; 파트 구분자(boundary)
multipart/form-data; boundary=frontier
요청정보전달
메시지 바디 사용 여부
바디의 인코딩 방식
HTTP 응답
응답 메세지 구조
응답 라인
응답 헤더
응답 바디
응답 라인
버전
상태코드
상태 메세지
상태 코드 : 서버의 응답 코드
대분류
1xx:정보
2xx:성공
200 : 요청 성공
201 : 생성 요청 성공
202 : 요청 수락, 요청 처리 보장 안됨
3xx:리다이렉션
300 : 여러 리소스에 대한 요청 결과 목록
301,302,303: Redirect. 리소스 위치가 변경된 상태
304 : 리소스가 수정되지 않았음
4xx,5xx:오류
400 : 요청 오류
401 : 권한 없음
403 : 요청 거부
404 : 리소스 없음
500 : 서버 내부 오류
501 : 서버가 지원하지 않는 요청
503 : 과부하 등으로 서비스 불가능 상태
응답 메세지 헤더
주요 헤더 필드
Content-Type : 바디 타입
Content-Length : 바디 길이
Set-Cookie : 쿠키 설정
ETag : 엔티티 헤더
응답 메세지 바디
바디데이터
HTML
XML/JSON
Octet Stream 등
컨텐츠 타입
메세지 헤더에 기록 : Content-type
대분류/소분류
주요 타입
text/plain, text/html
apllication/xml, application/json
image/png, image/jpg
audio/mp3, video/mp4
댓글