Python/Django

[Django] [웹 기초] HTTP 기초

개발새발 2020. 8. 2. 18:55
반응형

HTTP 이란?

HTTP(Hypertext Trasnfer Protocol)은 웹 서버웹 클라이언트 사이에서 데이터를 주고받기 위해 사용하는 통신 방식이다.

Hypertext인 HTML,XML 뿐만아니라 이미지, 음성, 동영상, 자바스크립트, PDF, 오피스파일 등 컴퓨터에서 사용하는 데이터는 모두 주고받을 수 있다.

 

예를들어 https://www.google.com/를 웹브라우저 주소창에 입력하고 Enter를 누르면 웹 클라이언트(브라우저)와 웹 서버 사이에 HTTP연결이 맺어지고 웹 클라이언트는 웹 서버에 Reqeust를 보내게 된다. 웹 서버는 Request에 따라 처리한 뒤 Response를 전달한다.

 

HTTP의 특징은 stateless 이다. 즉, 웹 클라이언트와 웹 서버의 연결이 지속되지 않고 한번의 요청과 응답으로 종료된다는 의미이다.

이러한 stateless 방식의 장점은 한번에 수 많은 사용자를 안정적으로 처리할 수 있지만 연결이 끊어지면 클라이언트의 이전 상태(로그인 등)의 정보를 알 수 없다는 단점이 있다. 따라서 이러한 단점을 극복하기 위해 쿠키(Cookie)를 사용한다.

HTTP 메시지의 구조

스타트라인(Start Line) => 요청라인 or 상태라인
헤더(Header)
빈줄(Blank Line)
바디(Body)

 

HTTP 처리 방식

HTTP 메소드를 통해 클라이언트가 원하는 처리 방식을 서버에 알려주며 데이터 조작의 기본이 되는 CRUD와 매핑 되는 처리를 함.

*CRUD(Create, Rread, Update, Delete)

 

HTTP 메소드 종류 (웹 클라이언트 -> 웹 서버)

메소드명 의미 CRUDE와 매핑
GET 데이터(리소스) 취득 요청 READ
POST 데이터(리소스) 생성 요청 CREATE
PUT 데이터(리소스) 변경,수정 요청 UPDATE
DELETE 데이터(리소스) 삭제 요청 DETLE
HEAD 데이터(리소스)의 헤더(메타데이터) 취득  
OPTIONS 데이터(리소스)가 서포트하는 메소드 취득  

 

HTTP 상태 코드 (웹 서버 -> 웹 클라이언트)

상태코드 상태 텍스트 의미
2xx Success(성공) 클라이언트 요청이 서버에서 성공적으로 처리
3xx Redirection(리다이렉션) 클라이언트 요청을 마치기 위해 추가적인 동작이 필요(리소스가 이동했을 때)
4xx Client Error(클라이언트 에러) 클라이언트의 요청이 잘못 되었을 경우
5xx Server Error(서버 에러) 서버 측 사정으로 메시지 처리를 못했을 경우

 

 

반응형