본문 바로가기

Network

HTTP

1. HTTP 메서드 (HTTP Methods)

HTTP 메서드는 클라이언트가 서버에 요청의 목적을 전달하는 데 사용된다. 주로 CRUD 작업에 매핑된다.

메서드 설명 CRUD 매핑

GET 데이터를 서버에서 가져오기 위한 요청. **요청 본문(body)**를 가질 수 없음. Read
POST 서버에 데이터를 추가(전송)하기 위한 요청. 본문에 데이터를 포함. Create
PUT 서버에 있는 자원을 전체 업데이트(전체 교체)하는 요청. 본문에 수정된 데이터를 포함. Update
DELETE 서버에서 데이터를 삭제하기 위한 요청. Delete

 

2. 자원과 URL

  • HTTP에서 **자원(Resource)**은 클라이언트가 요청하는 **주소(URL)**에 의해 식별된다.
  • URL 구조:
    https://example.com/resource/123
    
    • https://: 프로토콜.
    • example.com: 서버 도메인.
    • /resource/123: 요청하는 자원의 경로.
      (예: /resource는 자원 이름, 123은 특정 자원의 ID)

 

3. HTTP 요청(Request)

HTTP 요청은 서버에 데이터를 요청하거나 전달하기 위해 사용된다.

요청의 구성 요소:

  1. 메서드: GET, POST 등.
  2. URL: 요청 자원의 위치.
  3. 헤더(Header): 요청 메타데이터.
    • 예: Content-Type, Authorization.
  4. 본문(Body):
    • 데이터를 담아 전송.
    • GET 요청은 본문을 가질 수 없음.
    • POST, PUT, DELETE는 본문 사용 가능.

 

4. HTTP 응답(Response)

HTTP 응답은 요청에 대한 서버의 응답이다.

응답의 구성 요소:

  1. 상태 코드(Status Code):
    • 요청의 처리 결과를 나타내는 숫자 코드.
    • 주요 상태 코드:코드 설명
      200 요청 성공
      201 자원 생성 성공
      400 잘못된 요청 (클라이언트 오류)
      401 인증 실패
      403 권한 없음
      404 자원 없음
      500 서버 내부 오류
  2. 헤더(Header):
    • 응답 메타데이터.
    • 예: Content-Type, Set-Cookie.
  3. 본문(Body):
    • 요청한 데이터나 메시지를 포함.

 

5. HTTP의 Stateless 특성

  • Stateless:
    HTTP는 상태를 기억하지 않음. 요청 간에 클라이언트와 서버의 상태가 유지되지 않는다.
  • 상태 유지 방법:
    • 쿠키(Cookie):
      • 클라이언트 브라우저에 데이터를 저장하여 상태를 유지.
      • 서버가 쿠키를 생성하고, 클라이언트는 쿠키를 요청 시 함께 전송.
    • JWT (JSON Web Token):
      • 클라이언트 측에서 상태 정보를 저장하는 토큰.
      • 토큰에 사용자의 인증 정보를 포함하여 상태 유지.

 

6. JWT (JSON Web Token)

  • JWT란?
    • 클라이언트와 서버 간 상태를 유지하기 위해 사용하는 토큰 기반 인증 방식.
    • JSON 형식의 데이터를 Base64로 인코딩한 문자열.
    • 상태 정보를 클라이언트 측에서 관리하므로 서버의 부하를 줄임.
  • 구조:
    1. Header: 알고리즘과 토큰 타입 정보.
    2. Payload: 사용자 정보와 상태 데이터.
    3. Signature: Header와 Payload를 기반으로 생성된 검증용 서명.
  • xxxxx.yyyyy.zzzzz
  • 장점:
    • 상태를 클라이언트에 저장하므로 서버 부하 감소.
    • 분산 환경에서 유리.
  • 사용 예시:
    • 로그인 시 JWT를 생성하여 클라이언트에 전달.
    • 클라이언트는 이후 요청에서 JWT를 Authorization 헤더에 포함하여 인증.

 

'Network' 카테고리의 다른 글

CORS란  (0) 2024.07.09
Open API와 API Key  (0) 2024.05.31
심화 SPA  (0) 2024.05.31
CORS  (0) 2024.05.31
REST API  (0) 2024.05.31