HTTP란?
HyperText Transfer Protocol
: html과 같은 하이퍼미디어 문서를 전송하기 위한 Application Layer(7응용계층) 프로토콜 중 하나이다. 웹 브라우저와 웹 서버간의 통신을 위해 디자인되었다.
- HTTP는 무상태 프로토콜 (Stateless protocol)이다.
무상태란 클라이언트-서버 간의 통신(요청과 응답 과정)이 서로 독립적으로 처리되며, 각각 특정 상태(state)가 저장되거나 이전 요청이나 다음 요청이 기억되지 않는 것을 뜻한다.
장점 :
1) 통신간의 연결 상태 처리나 정보 저장을 관리할 필요가 없어서 서버 디자인이 간단하다.
2) 서버는 각각의 요청에 그때그때 응답만 보내주면 된다.
단점 :
1) 요청 처리를 위한 데이터를 매번 보내야 한다.
ex. 로그인 정보 - 로그인 상태에 대한 정보를 매번 보내야하는데, 이를 해결하기 위해 쿠키나 세션을 사용해 데이터를 처리한다. (이부분에 대해서는 추후에 더 알아볼 것)
HTTP 요청 메소드 (HTTP verbs) -CRUD
- GET : 리소스 요청(Read)
- POST : 리소스 생성(Create)
- PUT : 리소스 업데이트,변경(Update)
- DELETE : 리소스 삭제(Delete)
- HEAD : 서버 헤더 정보 획득, GET과 유사하지만 Response Body를 반환하지 않는다.
- OPTIONS : 서버 옵션을 확인하기 위한 요청. CORS에서 사용
(추후 CORS블로깅에서 다룸)
HTTP 메세지
클라이언트-서버 간에 데이터가 교환되는 방식.
- 요청 (request) - 클라이언트
- 응답 (response) - 서버
HTTP 메세지 형식
-
Start line :
Requests: 요청 메소드 / URL,URI / HTTP 버전
Responses : HTTP 버전 / 응답 정보(상태코드 Status code) / 응답 메세지
HTTP Status Code
2xx : 성공
3xx : 새 url로 리다이렉트를 유도하는 경우
4xx : 클라이언트 에러 (404 Not Found)
5xx : 서버 에러
프론트개발에서 이 상태코드를 보고 에러를 처리할 수 있다.
-
Headers : 헤더 정보 ex. Host, Server, Content-Type, Content-Length, Date
-
empty-line
-
Body :
requests: POST, PUT의 경우에만 존재. 요청 관련 내용
response: 응답 리소스 데이터
MIME 타입 - Content-Type
Content-Type : application/json
MIME 타입 - MDN
MIME 타입 관련해서는 추후 정리 예정
(이어서)