ABOUT ME

주니어 개발자

Today
Yesterday
Total
  • [Spring] HTTP
    Spring 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가지

    1. Stateless (무상태성)
      • 서버는 이전 요청의 상태를 기억하지 않음
      • 요청할 때마다 필요한 모든 정보를 매번 보내야 함
    2. Connectionless (비연결성)
      • 요청하고 응답받으면 연결 종료
      • 매 요청마다 연결 필요 → 요즘은 개선 (Keep-Alive, Persistent Connection)
    3. 클라이언트-서버 구조
      • 클라이언트 → 서버로 요청
      • 서버 → 클라이언트로 응답

    ✅ HTTP 기본 동작 순서

    1. 클라이언트가 Request 전송
    2. 서버가 처리 후 Response 반환
    3. 클라이언트가 응답 내용을 해석하고 화면에 출력

     

    ✅ HTTP 메시지 구조

    📥 [Request 요청 메시지]

    
      
    GET /search?q=sparta HTTP/1.1
    Host: www.google.com
    User-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 OK
    Content-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 특수 요청 주로 내부적 사용

     

    ✔ 예시: GET /users/1, POST /users, PATCH /users/1

     

     

    ✅ 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
Designed by Tistory.