Django

1. HTTP (구조, 메소드, 상태코드)

테니드2 2021. 4. 7. 22:16

▶HTTP(Hypertxt Transfer Protocol): 웹 서버와 웹 클라이언트 사이에서 데이터를 주고받기 위해 사용하는 통신 방식, TCP/IP 프로토콜 위에서 동작한다. HTML, XML 등과 같은 하이퍼텍스트 뿐만 아니라 이미지, 음성, 동영상, 자바스크립트, PDF 등 컴퓨터에서 다룰 수 있는 데이터라면 무엇이든 전송할 수 있다.

 

HTTP 메시지의 구조

스타트라인(Start LIne)
헤더(Header)
빈 줄(Blank LIne)
바디(Body)

스타트라인(Start LIne): 요청라인 또는 상태라인

헤더(Header): 헤더는 생략 가능

빈 줄(Blank LIne): 헤더의 끝을 빈 줄로 식별

바디(Body): 바디는 생략 가능

 

 

 

- HTTP 메소드 종류

메소드명 의미 CRUD와 매핑되는 역할
GET 리소스 취득 Read(조회)
POST 리소스 생성, 리소스 데이터 추가 Create(생성)
PUT 리소스 변경 Update(변경)
DELETE 리소스 삭제 Delete(삭제_
HEAD 리소스가 헤더(메타데이터) 취득  
OPTIONS 리소스가 서포트하는 메소드 취득  
TRACE 루프백 시험에 사용  
CONNECT 프록시 동작의 터널 접속으로 변경  

 

- 상태 코드

메소드명 의미 CRUD와 매핑되는 역할
1xx Informational(정보 제공) 임시적인 응답으로, 현재 클라이언트의 요청까지 처리되었으니 계속 진행하라는 의미
2xx Success(성공) 클라이언트의 요청이 서버에서 성공적으로 처리
3xx Redirection(리다이렉션) 완전한 처리를 위해서 추가적인 동작을 필요로 하는 경우입니다. 주로 서버의 주소 또는 요청한 URI의 웹 문서가 이동되었으니, 그 주소로 다시 시도해보라는 의미
4xx Client Error(클라이언트 에러) 없는 페이지를 요청하는 것처럼 클라이언트의 요청 메시지 내용이 잘못된 경우
5xx Server Error(서버 에러) 서버 측 사정에 의해서 메세지 처리에 문제가 발생한 경우입니다. 서버의 부하, DB 처리 과정 오류, 서버에서 익섹션이 발생하는 경우

 

 

- 자주 사용되는 상태 코드

상태코드 상태 텍스트 응답문구 서버 측면에서의 의미
2xx Success 성공 클라이언트가 요청한 동작을 수신하여 이해했고, 승낙했으며 성공적으로 처리함
200 OK 성공 서버가 요청을 성공적으로 처리
201 Created 생성됨 요청이 처리되어서 새로운 리소스가 생성
202 Accepted 허용됨 요청은 접수했지만 처리가 완료되지 않음

 

상태코드 상태 텍스트 응답문구 서버 측면에서의 의미
3xx Redirection 리다이렉션 클라이언트는 요청을 마치기 위해 추가적인 동작을 취해야 함
301 Moved
Permanently
영구 이동 지정한 리소스가 새로운 URI로 이동
303 See Other 다른 위치 보기 다른 위치로 요청하라
307 Temporary
Redirect
임시 리다이렉션 임시로 리다이렉션이 요청이 필요하다

 

 

상태코드 상태 텍스트 응답문구 서버 측면에서의 의미
4xx Client Error 클라이언트 에러 클라이언트의 요청에 오류가 있다.
400 Bad Request 잘못된 요청 요청의 구문이 잘못되었다.
401 Unauthorized 권한 없음 지정한 리소스에 대한 액세스 권한이 없다.
403 Forbidden 금지됨 지정한 리소스에 대한 액세스가 금지되었따.
404 Not Found 찾을 수 없음 지정한 리소스를 찾을 수 없다.

 

 

상태코드 상태 텍스트 응답문구 서버 측면에서의 의미
5xx Serer Error 서버 에러 클라이언트의 요청은 유효한데, 서버가 처리에 실패했다.
500 Internal
Server Error
내부 서버 오류 서버쪽에서 에러가 발생했다.
502 Bad Gateway 불량 게이트웨이 게이트웨이 또는 프록시 역할을 하는 서버가 그 뒷단의 서버로부터 잘못된 응답을 받았다.
503 Service
Unavailable
서비스 제공불가 현재 서버에서 서비스를 제공할 수 없다. 보통은 서버의 과부하나 서비스 점검 등 일시적인 상태이다.

출처:한빛 미디어 Django로 배우는 쉽고 빠른 웹 개발 파이썬 웹 프로그래밍