- HyperText Transfer Protocol
- 컴퓨터들끼리 HTML 파일을 주고 받을 수 있도록 하는 소통 방식 또는 약속
- Request / Response (요청 / 응답)
- 클라이언트는 사용자를 대신하여 동작하는 모든 도구이며, 이 역할은 주로 브라우저에
의해 수행됨- 브라우저는 항상 요청을 보내는 개체
- 클라이언트가 요청을 보내면 서버가 응답을 해줌
- 서버는 요청에 대한 문서를 제공함
- Stateless
- State(상태) + less(없음)
- 각각의 HTTP 통신(요청 / 응답)은 독립적이기 때문에 과거의 통신에 대한 내용을 알지 못함
- 통신마다 필요한 모든 정보를 담아서 요청을 보내야 함
- 여러 번의 통신 진행 과정에서 연속된 데이터 처리가 필요한 경우를 위해
로그인 토큰, 브라우저의 쿠키, 세션, 로컬스토리지 같은 기술이 만들어짐
- Start Line: 요청의 첫번째 줄
- HTTP Method
- 해당 요청이 의도한 액션을 정의하는 부분
- 주로 GET, POST, DELETE가 많이 쓰임
- Request target
- 해당 request가 전송되는 목표 url
- HTTP Version
- 말 그대로 사용되는 HTTP 버전을 뜻함
- 주로 1.1 버전이 널리 쓰임
- Hearders: 해당 요청에 대한 추가 정보(메타 데이터)를 담고 있는 부분
Key: Value 값으로 되어 있음 (JavaScript의 객체 형태라고 보면 됨)
자주 사용되는 Headers의 정보Headers: { Host: 요청을 보내는 목표(타겟)의 주소. 즉, 요청을 보내는 웹사이트의 기본 주소가 됨 (ex. www.apple.co.kr) User-Agent: 요청을 보내는 클라이언트의 대한 정보 (ex. chrome, firefox, safari, explorer) Content-Type: 해당 요청이 보내는 메세지 body의 타입 (ex. application/json) Content-Length: body 내용의 길이 Authorization: 회원의 인증/인가를 처리하기 위해 로그인 토큰을 Authroization 에 담는다 }
- Body : 해당 요청의 실제 내용. 주로 Body를 사용하는 메소드는 POST다.
ex ) 로그인 시에 서버에 보낼 요청의 내용Body: { "user_email": "jun.choi@gmail.com" "user_password": "wecode" }
Headers: 요청의 헤더와 동일. 응답의 추가 정보를 담고 있음
응답에서만 사용되는 헤더의 정보들이 있음(Server 헤더)
Body: 요청의 Body와 일반적으로 동일. 필요 없는 경우 Body가 없을 수도 있음
가장 많이 사용되는 Body의 데이터 타입은 JSON이다.
ex) 로그인 요청에 대해 성공했을 때 응답의 내용
Body: {
"message": "SUCCESS"
"token": "kldiduajsadm@9df0asmzm" (암호화된 유저의 정보)
}
자주 사용되는 HTTP 메소드 3가지