HTTP Methods

HTTP request methods and their usage.

Common Methods

GET - Retrieve resource
Safe: Yes, Idempotent: Yes
GET /api/users/123

POST - Create resource
Safe: No, Idempotent: No
POST /api/users
Body: { "name": "John" }

PUT - Update/Replace entire resource
Safe: No, Idempotent: Yes
PUT /api/users/123
Body: { "name": "John", "email": "[email protected]" }

PATCH - Partial update
Safe: No, Idempotent: Yes
PATCH /api/users/123
Body: { "email": "[email protected]" }

DELETE - Remove resource
Safe: No, Idempotent: Yes
DELETE /api/users/123

Less Common Methods

HEAD - Like GET but no body
HEAD /api/users/123
Returns only headers, check if resource exists

OPTIONS - Describe communication options
OPTIONS /api/users
Returns: Allow: GET, POST, PUT, DELETE

TRACE - Echo request for debugging
TRACE /api/users

CONNECT - Establish tunnel
CONNECT example.com:443

Idempotency

Idempotent - Same result on multiple calls
GET, PUT, DELETE, HEAD, OPTIONS

Not Idempotent
POST, PATCH

Example: PUT is idempotent
PUT /api/users/123 { name: "John" }
Call 1: Updates user to John
Call 2: No change, already John

Example: POST is not idempotent
POST /api/users { name: "John" }
Call 1: Creates user 1
Call 2: Creates user 2

Safe Methods

Safe - Read-only, no side effects
GET, HEAD, OPTIONS

Unsafe - Modify server state
POST, PUT, PATCH, DELETE

Caching
Safe methods can be cached
Unsafe methods typically not cached