cs/ODOQ

[ODOQ] HTTP에서 멱등성

icodesiuuuu 2024. 12. 20. 20:23

[One Day One Question]

HTTP에서 멱등성에 대해 설명해 주세요.


HTTP 메서드에서 멱등성(Idempotency)동일한 요청을 여러 번 보냈을 때, 서버의 상태가 한 번 보낸 것과 동일하게 유지되는 성질을 의미합니다. 즉, 요청을 몇 번 보내든 서버의 상태는 변하지 않고 동일한 결과를 반환해야 한다는 특성을 나타냅니다.

멱등성의 특징

  1. 멱등성은 서버의 최종 상태가 동일한지에 초점이 맞춰져 있습니다.
  2. 클라이언트가 동일한 요청을 여러 번 보내더라도, 서버가 그 요청을 한 번 처리한 것과 결과가 같아야 합니다.
  3. 멱등성은 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" }