정의
- Hyper Text Transfer Protocol
- Pront End(HTML)으로 부터 넘어오는 데이터를 서버에 요청하고 서버로 부터 응답을 받기 위해 정의된 프로토콜을 의미.
특징
- Request/Response -> 항상 HTTP 통신은 Request/Response로 구성되며 text로 설정되어 있다.
- Stateless -> HTTP 통신은 절대 과거의 요청이나 응답에 대한 것을 모른다.
(로그인 토큰, 브라우저의 쿠키, 세션, 로컬 스토리지 등으로 과거내용 관리)
Request
정의) Client가 HTTP 통신을 통해 서버로 보내는 요청
메시지 구조)
1. StartLine : 요청의 시작 단락, 총 세개로 구성
- HTTP Method : 해당 요청이 의미하는 액션, GET, POST, PUT, DELETE
- Request Target : 해당 요청이 전송되는 URL(서버 주소)
- HTTP version : HTTP의 버전
2. Headers : 요청에 대한 추가 정보(key : value 로 구성)
- Host : 요청을 보내는 타겟의 주소 -> www.naver.com
- User-Agent : 요청을 보내는 클라이언트가 사용중인, 전송하는 환경(브라우저) -> Safari, Chorome 등
- Content-Type : Body의 타입 -> JSON, multipart/form-data 등
- Content - Length : Body 내용의 길이
3. Body : 요청의 실제 내용
Body : {
"id" : "ID"
"pwd" : "PWD"
}
Response
정의) Server로 부터 Client에 전달되는 응답
메시지 구조)
1. StartLine : 응답의 시작 단락
- HTTP Version : HTTP의 버전
- Status Code : 응답 메시지의 상태 코드 -> 200, 400
- Status Text : 응답 메시지의 상태를 설명 -> SUCSESS(200과 연결), Not Found(400과 연결)
2. Headers : 응답에 대한 추가 정보
- Request와 Headers와 구조가 동일하나 User-Agent 대신 Server 헤더를 사용한다.
3. Body : 응답의 실제 내용
Body: {
"message": "SUCCESS"
"token": "uesrID" (다양한 내용 전송)
}
HTTP Methods(with CRUD)
1) GET - Retrieve
- 서버로부터 데이터를 받아올 때 사용
예시) 서버로부터 로그인 페이지 받아오기
StartLine - GET /member
2) POST - Register
- 서버로부터 데이터를 등록할 때 사용
예시) 서버에 회원 등록
StartLine - POST /member
Headers - ContentType : "application/json"
Body - {"id" : "hello", "pwd" : "1234"}
3) PUT - Update
- 서버로부터 데이터를 업데이트할 때 사용
예시) 회원 비밀번호 변경
StartLine - PUT /member/id=?"hello" or /member/hello
Headers - ContentType : "application/json"
Body - {"id" : "hello", "pwd" : "12345"}
4) DELETE - Delete
- 서버로부터 데이터를 삭제할 때 사용
예시)
StartLine - DELETE /member/id?="hello" or /member/hello
(+) multipart/form-data
- 이미지, 동영상 등 파일업로드시 사용하는 form 양식이다.
- 웹에 있는 form 태그에 enctype으로 해당 내용 지정시 설정된다.
- 이 후, HTTP Request의 Headers에 Content-type은 multipart/form-data이 된다.
- 해당 파일을 보낸다기 보단 해당파일을 문자로 생성하여 body에 담아 전송한다.