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