-
[Spring] HTTPSpring 2025. 3. 18. 23:30
✅ HTTP란? (HyperText Transfer Protocol)
웹에서 클라이언트(브라우저)와 서버가 서로 데이터를 주고받기 위해 만든 통신 규약(프로토콜)
💾 HTTP로 주고받는 데이터 예시
- HTML (웹 페이지)
- CSS (디자인)
- JavaScript (동작)
- 이미지, 동영상
- JSON (서버-클라이언트 API 데이터 교환)
📈 HTTP 주요 버전
버전 특징 HTTP/1.1 가장 많이 사용, 기본 버전 HTTP/2 성능 개선 (멀티플렉싱), 대부분 브라우저 지원 HTTP/3 UDP 기반, 속도 향상 ✅ HTTP 핵심 특징 3가지
- Stateless (무상태성)
- 서버는 이전 요청의 상태를 기억하지 않음
- 요청할 때마다 필요한 모든 정보를 매번 보내야 함
- Connectionless (비연결성)
- 요청하고 응답받으면 연결 종료
- 매 요청마다 연결 필요 → 요즘은 개선 (Keep-Alive, Persistent Connection)
- 클라이언트-서버 구조
- 클라이언트 → 서버로 요청
- 서버 → 클라이언트로 응답
✅ HTTP 기본 동작 순서
- 클라이언트가 Request 전송
- 서버가 처리 후 Response 반환
- 클라이언트가 응답 내용을 해석하고 화면에 출력
✅ HTTP 메시지 구조
📥 [Request 요청 메시지]
GET /search?q=sparta HTTP/1.1Host: www.google.comUser-Agent: Chrome/120- Start Line: GET /search?q=sparta HTTP/1.1
- Header: 부가 정보 (Host, User-Agent 등)
- Body: 주로 POST나 PUT에서 사용 (JSON, 파일 등)
📤 [Response 응답 메시지]
HTTP/1.1 200 OKContent-Type: text/html; charset=UTF-8<html>결과 페이지</html>- Status Line: HTTP/1.1 200 OK
- Header: Content-Type, Set-Cookie 등
- Body: HTML, JSON 등 실제 데이터
✅ HTTP Method (동작 행위)
🎯 REST API 설계 핵심 → CRUD 매핑
Method 설명 비고 GET 데이터 조회 URL 뒤에 Query 붙여 전송 POST 데이터 생성 회원가입, 글쓰기 PUT 전체 수정 (덮어쓰기) 전체 갱신 PATCH 일부 수정 일부 필드만 수정 DELETE 삭제 요청 자원 삭제 HEAD / OPTIONS 특수 요청 주로 내부적 사용 ✅ HTTP 상태 코드 (Status Code)
서버가 응답하는 결과 코드로, 5가지로 나눠짐
분류 코드 의미 1xx 100~199 정보 전달 (거의 안 씀) 2xx 200~299 성공 3xx 300~399 리다이렉트 4xx 400~499 클라이언트 오류 5xx 500~599 서버 오류 ✅ 자주 쓰는 핵심 코드
- 200 OK → 성공
- 201 Created → 리소스 생성 성공
- 400 Bad Request → 요청 잘못됨
- 401 Unauthorized → 인증 필요
- 403 Forbidden → 접근 금지
- 404 Not Found → 없는 주소
- 500 Internal Server Error → 서버 오류
✅ Method 속성
속성 의미 Method 안전성(Safe) 서버 데이터 변경 없음 GET, HEAD 멱등성(Idempotent) 몇 번 호출해도 결과 동일 GET, PUT, DELETE 캐시 가능(Cacheable) 응답 저장 후 재사용 GET, HEAD 주로 사용 ✅ HTTP Header란?
요청과 응답에서 부가적인 정보를 주고받는 공간
Header 역할 Content-Type 보내는 데이터 형식 (JSON, HTML 등) Authorization 인증 정보 (JWT, Token 등) User-Agent 브라우저 정보 Accept 원하는 응답 타입 (application/json) Cookie / Set-Cookie 세션 관리 Cache-Control 캐시 전략 (no-cache, max-age) ✅ 캐시 전략 완벽 이해
웹 성능을 좌우하는 핵심
- Cache-Control: max-age=3600 → 1시간 캐시
- ETag / If-None-Match → 데이터 변경 여부 판단
- 304 Not Modified → 캐시된 데이터 그대로 사용
✅ 최종 정리
핵심 요소 설명 Method CRUD 매핑 설계의 핵심 Status Code 서버 응답 의미 명확히 파악 Header 데이터 형식, 인증, 캐시 등 핵심 정보 담김 Stateless & Connectionless HTTP의 가장 큰 특징, REST 설계 원리 'Spring' 카테고리의 다른 글
[Spring] Web Application (1) (0) 2025.03.19 [Spring] RESTful API (0) 2025.03.19 [Spring] Web 기초 (1) 2025.03.18 [Spring] 네트워크 기초 (1) 2025.03.18