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로 배우는 쉽고 빠른 웹 개발 파이썬 웹 프로그래밍