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 요청은 서버에 데이터를 요청하거나 전달하기 위해 사용된다.
요청의 구성 요소:
- 메서드: GET, POST 등.
- URL: 요청 자원의 위치.
- 헤더(Header): 요청 메타데이터.
- 예: Content-Type, Authorization.
- 본문(Body):
- 데이터를 담아 전송.
- GET 요청은 본문을 가질 수 없음.
- POST, PUT, DELETE는 본문 사용 가능.
4. HTTP 응답(Response)
HTTP 응답은 요청에 대한 서버의 응답이다.
응답의 구성 요소:
- 상태 코드(Status Code):
- 요청의 처리 결과를 나타내는 숫자 코드.
- 주요 상태 코드:코드 설명
200 요청 성공 201 자원 생성 성공 400 잘못된 요청 (클라이언트 오류) 401 인증 실패 403 권한 없음 404 자원 없음 500 서버 내부 오류
- 헤더(Header):
- 응답 메타데이터.
- 예: Content-Type, Set-Cookie.
- 본문(Body):
- 요청한 데이터나 메시지를 포함.
5. HTTP의 Stateless 특성
- Stateless:
HTTP는 상태를 기억하지 않음. 요청 간에 클라이언트와 서버의 상태가 유지되지 않는다. - 상태 유지 방법:
- 쿠키(Cookie):
- 클라이언트 브라우저에 데이터를 저장하여 상태를 유지.
- 서버가 쿠키를 생성하고, 클라이언트는 쿠키를 요청 시 함께 전송.
- JWT (JSON Web Token):
- 클라이언트 측에서 상태 정보를 저장하는 토큰.
- 토큰에 사용자의 인증 정보를 포함하여 상태 유지.
- 쿠키(Cookie):
6. JWT (JSON Web Token)
- JWT란?
- 클라이언트와 서버 간 상태를 유지하기 위해 사용하는 토큰 기반 인증 방식.
- JSON 형식의 데이터를 Base64로 인코딩한 문자열.
- 상태 정보를 클라이언트 측에서 관리하므로 서버의 부하를 줄임.
- 구조:
- Header: 알고리즘과 토큰 타입 정보.
- Payload: 사용자 정보와 상태 데이터.
- Signature: Header와 Payload를 기반으로 생성된 검증용 서명.
- xxxxx.yyyyy.zzzzz
- 장점:
- 상태를 클라이언트에 저장하므로 서버 부하 감소.
- 분산 환경에서 유리.
- 사용 예시:
- 로그인 시 JWT를 생성하여 클라이언트에 전달.
- 클라이언트는 이후 요청에서 JWT를 Authorization 헤더에 포함하여 인증.