Idempotency — same request produces same result.
Why important:
Idempotent Methods:
GET — always idempotent (read-only)
PUT — idempotent (replace resource)
DELETE — idempotent (remove resource)
POST — NOT idempotent (create new)
PATCH — depends on implementation
Example:
POST /orders (not idempotent):
Request 1: Create order → Order #1
Request 2: Create order → Order #2 (duplicate!)
PUT /orders/123 (idempotent):
Request 1: Update order #123 → Success
Request 2: Update order #123 → Same result
Implementation: Use idempotency keys for POST.