HTTP(Hyper Text Transfer Protocol)
웹에서 클라이언트(주로 브라우저)와 서버 간에 데이터를 주고받기 위한 규약(프로토콜)
HTTP 메시지는 크게 요청(Request)과 응답(Response)으로 구분됨
- Stateless (무상태성)
각 요청은 독립적으로 처리되며, 서버는 이전 요청의 상태를 기억하지 않음 - Connectless (비연결성)
요청 후 응답을 보내면 연결이 끊기며, 서버 자원을 효율적으로 사용할 수 있음
→ HTTP/1.1부터는 연결 재사용이 가능해짐 (Keep-Alive 지원)
→ 단순하면서도 확장성이 뛰어난 구조
공통 구조
Start Line ← 요청 또는 응답의 상태를 정의
Headers ← 요청/응답에 대한 부가 정보
(빈 줄) ← 헤더와 바디를 구분하는 역할 (메타 정보의 끝을 알림)
Body ← 요청 또는 응답의 실제 데이터
요청(Request) 메시지
Start Line
Method URI HTTP - Version 형태
예: GET /index.html HTTP/1.1
Headers
요청과 관련된 메타 정보
예: Content-Type, User-Agent
Body
주로 POST, PUT 요청 시 데이터 전송에 사용
응답(Response) 메시지
Start Line
HTTP-Version Status-Code Reason-Phrase
예: HTTP/1.1 200 OK
Headers
응답에 대한 메타 정보
예: Content-Type, Content-Length
BODY
클라이언트에 전달할 실제 콘텐츠
예: HTML문서, JSON 등
HTTP Request Methods
요청이 자원에 대해 어떤 행위(동작)를 하고 싶은지 나타냄
GET | 자원 조회 |
POST | 자원 생성 |
PUT | 자원 전체 수정 |
PATCH | 자원 부분 수정 |
DELETE | 자원 삭제 |
HTTP 요청 메서드 - HTTP | MDN
HTTP는 요청 메서드를 정의하여, 주어진 리소스에 수행하길 원하는 행동을 나타냅니다. 간혹 요청 메서드를 "HTTP 동사"라고 부르기도 합니다. 각각의 메서드는 서로 다른 의미를 구현하지만, 일부
developer.mozilla.org
HTTP 상태 코드 (Status Code)
서버가 클라이언트 요청에 대해 어떻게 응답했는지를 나타내는 3자리 숫자 코드
1XX | 정보 전달 |
2XX | 성공 |
3XX | 리다이렉션 |
4XX | 클라이언트 오류 |
5XX | 서버 오류 |
HTTP 상태 코드 - HTTP | MDN
HTTP 응답 상태 코드는 특정 HTTP 요청이 성공적으로 완료되었는지 알려줍니다. 응답은 5개의 그룹으로 나누어집니다: 정보를 제공하는 응답, 성공적인 응답, 리다이렉트, 클라이언트 에러, 그리고
developer.mozilla.org
HTTP Cats
API for HTTP Cats
http.cat
URL과 URI
웹 상의 자원(문서, 이미지 등)을 식별하고 위치를 지정하기 위한 체계
URI (Uniform Resource Identifier)
인터넷 자원을 식별하는 문자열 규약
통합 자원 식별자
두 가지 하위 개념 포함
- URL(Uniform Resource Locator): 자원의 위치를 나타냄
- URN(Uniform Resource Name): 자원의 이름을 고유하게 지정
실무에서는 보통 URN을 사용하는 비중이 낮기때문에 URL = URI로 사용됨
*resource(자원)
요청을 하는 대상
예: 문서, 사진, 영상 등
예시: https://www.example.com:443/articles?id=123#section2
Scheme(Protocol) (https) | 사용 프로토콜 (http, https 등) |
Host(Domain name) (www.example.com) | 요청 대상 서버의 주소 |
Port (:443) | 서버가 사용하는 포트 (생략 가능) |
Path (/articles) | 서버 내 리소스의 경로 |
Query (?id=123) | 추가 파라미터 (key=value 형식), &로 구분되는 데이터 |
Fragment (#section2) | 자원 내 특정 위치 (북마크, HTML 앵커 등) |
*Path
웹 초기에는 실제 물리적인 위치를 나타냈으나 현재는 추상화된 형태를 표현함
'∟ Framework > ∟ DRF' 카테고리의 다른 글
DRF Single Model CRUD API 구현 (0) | 2025.03.29 |
---|---|
Django REST Framework(DRF) API 구현 (0) | 2025.03.29 |
JSON Response와 Serialization (0) | 2025.03.29 |
RESTful API와 JSON (1) | 2025.03.28 |
DRF(Django REST Framework) (1) | 2025.03.25 |