웹에서 가장 기본이 되는 통신 규칙
하이퍼텍스트(HTML)를 전송하기 위한 프로토콜
특징
텍스트 기반 : 사람이 읽을 수 있는 문자열 형식 (Binary가 아닌 Text로 메시지를 구성)
Stateless (무상태성) : 요청이 끝나면 서버는 클라이언트 정보를 기억하지 않음
같은 클라이언트라도 두 번째 요청을 보낼 때 "누군지" 모름
→ 그래서 쿠키/세션 같은 기술이 필요
Connectionless (비연결성) : 요청/응답이 끝나면 서버-클라이언트 연결을 끊음
확장성 : HTTP 헤더를 통해 새로운 기능을 쉽게 추가 가능 (예: 인증 토큰, 캐시 제어, CORS 설정 등)
| 메서드 | 설명 | 주요 특징 / 사용 예시 |
|---|---|---|
| HEAD | 리소스의 헤더만 요청 | - GET과 같지만 Body는 없음 - 리소스의 존재 여부/메타데이터 확인 시 사용 (예: 파일 크기, 최종 수정일) |
| GET | 리소스 조회(Read) | - 가장 많이 사용되는 메서드 - 데이터는 URL(Query String)로 전달 - 요청 Body 없음 |
| POST | 리소스 생성(Create), 서버에 데이터 전송 | - 회원가입, 글쓰기, 파일 업로드 등 - 데이터는 Body에 담아 전송 - 대용량/민감 데이터 처리 적합 |
| PUT | 리소스 전체 수정/업로드 | - 해당 URL에 요청한 데이터로 리소스를 통째로 교체 - 없으면 새로 생성 - 예: PUT /users/1 → id=1 사용자 정보 전체 업데이트 |
| DELETE | 리소스 삭제 | - 요청한 리소스 제거 - 예: DELETE /users/1 |
| PATCH | 리소스 부분 수정 | - PUT과 달리 일부 속성만 수정 - 예: PATCH /users/1 { "email": "new@x.com" } |
| TRACE | 요청이 서버까지 가는 경로 추적/디버깅 | - 루프백(Loopback) 테스트 - 실제로는 거의 사용 X (보안상 차단하는 경우 많음) |
| OPTIONS | 서버가 지원하는 메서드 목록 조회 | - 예: CORS 사전 요청(Preflight Request) - 특정 URL에서 사용 가능한 메서드 확인 가능 |