Django: HTTP와 URL의 개념
HTTP와 URL의 개념. HTTP의 기본적인 동작 원리와 특성, 주요 요청 메소드와 상태 코드, 그리고 URL의 구조와 구성 요소를 다룹니다.
Django: HTTP와 URL의 개념
01. HTTP
HTTP의 개념
HTTP는 HyperText Transfer Protocol의 약자로, 웹에서 이루어지는 데이터 교환의 기본적인 약속(프로토콜)입니다. 이 프로토콜은 클라이언트와 서버 간의 요청(Request)과 응답(Response)을 기반으로 동작합니다.
- 요청(Request): 클라이언트에서 서버로 전송되는 메시지.
- 응답(Response): 서버에서 클라이언트로 전송되는 메시지.
HTTP의 특성
- Stateless (무상태):
- 서버는 클라이언트의 상태를 보존하지 않습니다.
- 각 요청과 응답은 독립적으로 처리됩니다.
- Connectless (비연결성):
- 요청을 받고 응답을 전송한 후 연결을 종료합니다.
- 서버 자원을 효율적으로 사용 가능.
- 이후 HTTP/1.1 등장으로 연결 유지(Persistent Connection)가 도입되었습니다.
HTTP Message
HTTP 메시지는 요청(Request)과 응답(Response) 두 가지 형태로 나뉩니다. 구조는 유사하며, 다음과 같은 요소로 구성됩니다:
- Start Line: 요청 메소드와 URL, 응답 상태 코드 등이 포함.
- HTTP Header: 요청 또는 응답에 대한 메타 정보를 포함.
- Blank Line: 헤더와 본문을 구분하는 빈 줄.
- HTTP Body: 요청 데이터 또는 응답 문서를 포함.
예시: HTTP 요청과 응답의 구조
요청(Request):
- Start Line: Method (GET, POST 등), Target, HTTP Version
- Headers: 요청에 필요한 메타 정보
- Body: 요청과 관련된 데이터
응답(Response):
- Start Line: HTTP Version, Status Code, Status Message
- Headers: 응답에 대한 메타 정보
- Body: 요청 처리 결과 데이터
HTTP Request Methods
HTTP 요청 메소드는 클라이언트가 서버에 어떤 동작을 요청하는지를 나타냅니다. 주요 메소드는 다음과 같습니다:
- GET: 데이터를 조회.
- POST: 데이터를 서버에 전송.
- PUT: 데이터를 생성하거나 수정.
- DELETE: 데이터를 삭제.
HTTP Status Code
HTTP 상태 코드는 요청의 성공 여부를 나타내며, 다음과 같은 그룹으로 나뉩니다:
- 1XX: Informational Response (정보 제공)
- 2XX: Successful Response (요청 성공)
- 200 OK: 요청 성공.
- 201 Created: 새로운 데이터 생성 성공.
- 202 Accepted: 요청은 성공했으나 처리가 완료되지 않음.
- 204 No Content: 성공적으로 처리되었으나 응답 데이터 없음.
- 3XX: Redirection Message (리소스 이동)
- 4XX: Client Error Response (클라이언트 요청 오류)
- 400 Bad Request: 요청 잘못됨.
- 401 Unauthorized: 인증 필요.
- 403 Forbidden: 권한 없음.
- 404 Not Found: 요청한 자원 없음.
- 5XX: Server Error Response (서버 오류)
- 500 Internal Server Error: 서버에서 요청 처리 실패.
- 503 Service Unavailable: 서버가 요청을 처리할 준비가 되지 않음.
02. URL
URL의 개념
웹에서 우리가 요청하는 대상은 자원(Resource)입니다. 문서, 사진, 영상 등 다양한 자원을 식별하기 위해 URI(Uniform Resource Identifier)가 사용됩니다.
URI (Uniform Resource Identifier)
- 인터넷 상의 자원을 식별할 수 있는 유일한 문자열.
- 하위 개념으로 URN과 URL이 있음.
- 보통 URI와 URL을 같은 의미로 사용.
URL (Uniform Resource Locator)
- 자원의 위치(Location)를 나타내는 문자열.
- 흔히 말하는 웹 주소나 링크를 의미.
URN (Uniform Resource Name)
- 위치에 독립적인 자원을 위한 유일한 이름.
- 예: ISBN (국제표준도서번호).
URI의 구조
URI는 다음과 같은 구조를 가집니다:
1
https://www.aidenlim.dev:80/path/to/resource/?key=value#docs
- Scheme (Protocol):
https://
- 브라우저가 사용하는 프로토콜 (예: http, https, ftp 등).
- Host (Domain name):
www.aidenlim.dev
- 요청을 처리하는 웹 서버의 주소.
- Port:
:80
- 리소스에 접근하기 위한 문.
- 기본적으로 HTTP는 80, HTTPS는 443 포트를 사용.
- Path:
/path/to/resource/
- 서버에서 자원이 위치한 경로.
- Query (Identifier):
?key=value
- 추가적인 변수로 구성된 데이터.
- Fragment (Anchor):
#docs
- 자원 내 특정 위치를 나타냄 (예: HTML 문서 내 특정 섹션).
This post is licensed under CC BY 4.0 by the author.