HTTP (HyperText Transfer Protocol)
HTTP는 웹 개발의 핵심이며 웹 개발자라면 반드시 알고 있어야 한다.
클라이언트(브라우저)와 서버가 어떻게 데이터를 주고받는지를 모르면 문제를 해결하기가 힘들 수도 있다.
1. HTTP 개념
✔️ HTTP란 HyperText Transfer Protocol의 약자로 웹에서 데이터를 주고받을 때 사용하는 통신 규약(Protocol)이다.
쉽게 말해 웹 브라우저(클라이언트)와 웹 서버가 서로 소통하는 방법이라고 생각하면 된다.
- 데이터 전송: TEXT, IMAGE, FILE, HTML, JSON 등 다양한 형태의 데이터 전송
- 버전: HTTP/1.1(TCP)이 가장 많이 사용되며, HTTP/2, HTTP/3(UDP) 사용량 증가
- 용도:
- 클라이언트 → 서버 요청 (Request)
- 서버 → 클라이언트 응답 (Response)
- 서버 → 서버 데이터 통신
2. HTTP 동작 방식
- 클라이언트가 Request(요청) 를 보낸다
- 서버가 요청을 처리한 후 Response(응답) 전송한다.
3. HTTP 특징
✅ 클라이언트-서버 구조
- 클라이언트(UI)와 서버(비즈니스 로직, 데이터 관리) 분리 → 독립적 발전 가능
✅ 무상태(Stateless)
- 서버는 클라이언트의 상태를 저장하지 않음
- 장점: 서버 확장(Scale Out)이 용이, 높은 확장성
- 단점: 클라이언트가 데이터를 추가 전송해야 함
- 해결책: Cookie, Session, Token 활용
✅ 비연결(Connectionless)
- 연결 유지하지 않는 방식 → 요청마다 새로운 연결 생성
- 장점: 서버 자원 절약
- 단점: 응답 시간 증가, 모든 정적 자원(HTML, CSS, JS 등) 재다운로드 필요
- 해결책: Persistent Connections(지속 연결)
- 하나의 요청에 대한 응답이 끝날 때까지 연결 유지
- 연결 횟수 줄여 속도 개선
4. HTTP 메시지 구조
✅ HTTP 요청 메시지 (Request Message)
- Start Line
- HTTP Method (GET, POST, PUT, PATCH, DELETE)
- Request Target (예: /event, /search?keyword=sparta)
- HTTP Version (1.1)
- Header: 요청 추가 정보 포함 (예: Host: spartacodingclub.kr)
- Empty Line: 공백 한 줄 (필수)
- Message Body: 전송할 데이터 (JSON, HTML, 이미지 등)
✅ HTTP 응답 메시지 (Response Message)
- Start Line
- HTTP Version
- Status Code (예: 200 OK, 404 Not Found)
- Status Text
- Header: 응답에 대한 추가 정보 포함
- Empty Line: 공백 한 줄 (필수)
- Message Body: 전송할 데이터 (없을 수도 있음)
5. HTTP 주요 메서드 (Method)
- GET: 리소스 조회
- POST: 리소스 생성
- PUT: 리소스 전체 수정
- PATCH: 리소스 일부 수정
- DELETE: 리소스 삭제
6. HTTP 상태 코드 정리
HTTP 요청에 대한 처리 상태를 응답하는 코드로 Data를 함께 응답한다. Spring에서는 Response를 커스텀하여 의미 있는 메시지를 만들어 사용하기도 한다.
여러 상태 코드들이 있지만 다는 몰라도 간단하게 몇 번대 코드인지만 알면 된다.
- 1xx (Informational): 요청을 받았고, 계속 처리 중.
- 2xx (Successful): 요청이 성공적으로 처리됨.
- 예: 200 OK, 201 Created
- 3xx (Redirection): 요청을 완료하려면 추가적인 작업이 필요.
- 예: 301 Moved Permanently
- 4xx (Client Error): 클라이언트의 잘못된 요청.
- 예: 400 Bad Request, 404 Not Found
- 5xx (Server Error): 서버에서 문제가 발생한 경우.
- 예: 500 Internal Server Error
새로운 상태 코드가 추가되더라도, 첫 번째 숫자의 의미만 기억하면 대부분 이해 가능하다.
7. HTTP Method 속성과 상태 코드
HTTP Method는 안전성(Safe), 멱등성(Idempotent), 캐시가능성(Cacheable) 속성을 가지고 있다.
✅ 안전성:
- GET은 안전함 (데이터를 변환하지 않음).
- POST, DELETE, PUT, PATCH는 안전하지 않음 (데이터를 변환).
✅ 멱등성:
- GET과 PUT, DELETE는 멱등성 있음.
- POST는 멱등성을 보장하지 않음.
✅ 캐시 가능성:
- GET, HEAD 메서드가 주로 캐시 가능.
캐시란?: 데이터를 빠르게 접근하기 위해 임시 저장소에 데이터를 저장하는 기술이다. 서버나 클라이언트가 자주 요청하는 데이터나 자원을 미리 저장해 두어, 반복적인 요청을 처리할 때 속도 향상을 도와준다.
'Spring' 카테고리의 다른 글
JDBC (0) | 2025.03.24 |
---|---|
롬복(Lombok)이란? (0) | 2025.03.21 |
데이터베이스와 트랜잭션의 개념 (0) | 2025.03.20 |
간단한 CRUD 메모장으로 REST API 알아보기 (1) | 2025.03.19 |
Spring MVC란? (0) | 2025.03.18 |