[One Day One Question]
HTTP에서 멱등성에 대해 설명해 주세요.
HTTP 메서드에서 멱등성(Idempotency)은 동일한 요청을 여러 번 보냈을 때, 서버의 상태가 한 번 보낸 것과 동일하게 유지되는 성질을 의미합니다. 즉, 요청을 몇 번 보내든 서버의 상태는 변하지 않고 동일한 결과를 반환해야 한다는 특성을 나타냅니다.
멱등성의 특징
- 멱등성은 서버의 최종 상태가 동일한지에 초점이 맞춰져 있습니다.
- 클라이언트가 동일한 요청을 여러 번 보내더라도, 서버가 그 요청을 한 번 처리한 것과 결과가 같아야 합니다.
- 멱등성은 HTTP 메서드 설계 시 안정성과 예측 가능성을 보장하는 중요한 원칙입니다.
멱등성을 가지는 HTTP 메서드
1. GET
- 목적: 리소스 조회.
- 특징: GET 요청을 여러 번 보내도 서버의 데이터는 변하지 않습니다.
- 사용자를 조회하는 요청은 서버의 상태를 바꾸지 않고 동일한 결과를 반환합니다.
GET /users/1
2. HEAD
- 목적: 리소스의 헤더 정보 조회 (응답 본문 제외).
- 특징: GET과 동일하게 서버의 상태를 변경하지 않습니다.
3. PUT
- 목적: 리소스를 생성하거나 대체.
- 특징: 동일한 요청을 여러 번 보내더라도 결과가 변하지 않습니다.
- 처음에는 사용자가 생성되거나 수정됩니다.
- 동일한 요청을 반복하면 리소스는 항상 { "name": "Alice" }로 유지됩니다.
PUT /users/1
{ "name": "Alice" }
4. DELETE
- 목적: 리소스를 삭제.
- 특징: 동일한 요청을 여러 번 보내도 결과는 같아야 합니다.
- 첫 번째 요청으로 리소스가 삭제됩니다.
- 이후의 요청은 삭제할 리소스가 없어도 서버의 상태는 변하지 않습니다.
DELETE /users/1
멱등성이 없는 HTTP 메서드
1. POST
- 목적: 리소스를 생성하거나 서버 상태를 변경.
- 특징: 동일한 요청을 여러 번 보내면 서버 상태가 달라질 수 있습니다.
POST /users
{ "name": "Alice" }
'cs > ODOQ' 카테고리의 다른 글
[ODOQ] 서버 사이드 렌더링(SSR)과 클라이언트 사이드 렌더링(CSR) (0) | 2025.01.01 |
---|---|
[ODOQ] 리버스 프록시와 포워드 프록시 (0) | 2024.12.26 |
[ODOQ] 데이터베이스 커넥션 풀(Connection Pool)이란? (0) | 2024.12.19 |
[ODOQ] 운영체제(OS)란? (0) | 2024.12.18 |
[ODOQ] 동기(Synchronous), 비동기(Asynchronous) (0) | 2024.12.17 |