: HyperText와 Transfer 와 Protocol로 구성
: 네트워크 구간에서 HTML문서를 전송하기 위한 통신규약
출처: https://coding-start.tistory.com/208 [코딩스타트]
HyperText : 링크로 연결되어 있는 것
Transfer : 전달, 전송 / HTML의 문서 & 파일 전송하기
Protocol : 약속 / HTML 파일을 어떻게 전송하기 위한 약속
HTTP가 동작하기 위한 필수 조건 : 클라이언트
와 서버
클라이언트 : 사용자(사람만을 뜻하는게 아닌, 사용하는 핸드폰, 인터넷 등 요청(request)
을 보내는 모든 것)
ex) 데이터, 메세지 등을 보냄
서버 : 요청을 받아, 요청에 대한 응답(response)
을 해주는 모든 것 )
ex) 데이터 조회
Reaquest(요청)와 Response(응답)
요청을 하면, 응답이 돌아와야 함(가장 큰 특징)
HTTP 요청과 응답은 그냥 메세지일뿐!!
Stateless = State(상태) + Less(없음)
매번 요청을 할때, 과거의 HTTP 통신
에 대한 내용을 기억하지 못하는 상태
매 통신마다 필요한 정보(ex. 로그인 정보-토큰)를 담아서 요청을 보내야 함!!
(1) Start Line / Status Line : 요청과 응답의 상태(HTTP 메소드
, URL(타겟)
, HTTP 버전
)
요청(request)의 경우 : Start Line
- 상태를 같이 보내줌
ex) POST/users/signup HTTP/1.1
메소드 / URL / HTTP 버전
해석 : HTTP 메소드 중 POST 메소드
로 signup
이라는 요청 타겟
에 HTTP 1.1 버전
으로 요청을 보내겠다!
응답(response)의 경우 : Status Line
- 응답의 결과 or 상태를 같이 보내줌
ex) HTTP/1.1 200 OK
HTTP 버전
/ 응답 상태 코드
/ 응답 상태 설명
(2) Headers : 요청과 응답에 대한 추가 정보(메타 데이터
)를 딕셔너리(dictionary)형태로 담아주는곳
: '메세지의 상태, 누가 & 어디서 & 어떻게 보냈는지'의 메타 데이터
header에 담기는 정보👇:
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
에 담는다
}
(3) Body : 요청과 응답의 실제 담아주는 데이터 정보
(1) GET
(2) POST
***GET과 POST의 큰 차이점 : Body에 담을 데이터 여부 차이
(3) DELETE
status 코드 번호 | status 상태 | 설명 | ex |
---|---|---|---|
200 | :OK | 요청에 대해 성공 할 때 | |
201 | :Created | 생성 요청에 대해 생성이 완료 때 | |
400 | :Bad Request | 요청(request)이 잘못 되었을 때 (즉,없는 것을 요청한 경우) | |
401 | :Unauthorized | 인증되지 않은 누군가인 경우 (즉, 인증이 필요한 경우) | 로그인 하지 않은 유저 |
403 | :Forbidden | 허가 되지 않은 사람이 요청했을 경우 (즉, 유저에 대한 요청(접근)권한이 없는 경우) | 어드민페이지 유저 접근 |
404 | :Not Found | 잘못된 URL을 보낸 경우 (즉, 존재하지 않는 URL인 경우) | |
405 | :Method Not Allowed | 메소드를 잘못 보냈을 때 | |
500 | :Internal Server Error | 서버 에러 |