HTTP Methods
Complete guide about HTTP methods (GET, POST, PUT, DELETE, etc.) in moclojer. Learn when to use each method and how to implement correct RESTful APIs.
HTTP methods (also called HTTP verbs) define the action you want to perform on a resource. Choosing the correct method is essential for creating semantic and consistent RESTful APIs.
Supported Methods
Moclojer supports all standard HTTP methods:
GET
Read data
β
β
POST
Create data
β
β
PUT
Update/Replace
β
β
PATCH
Update partially
β
β
DELETE
Remove data
β
β
HEAD
Get headers (no body)
β
β
OPTIONS
Discover allowed methods
β
β
ΒΉ Idempotent: Multiple identical calls have the same effect as a single call Β² Safe: Doesn't modify data (read-only)
Syntax in Moclojer
- endpoint:
method: GET # Specifies the HTTP method
path: /users
response:
status: 200
body: "..."Default: If you omit method, moclojer uses GET.
GET - Read Data
Purpose: Retrieve data without modifying it.
Characteristics:
Safe: Doesn't change data on server
Idempotent: Multiple calls return the same result
Cacheable: Responses can be cached
No body: Should not have body in request
Example: List Resources
Usage:
Example: Get Specific Resource
Usage:
GET with Query Parameters
Usage:
When to Use GET
β Use GET for:
List resources (
GET /users)Get details (
GET /users/123)Search/filter (
GET /search?q=term)Export data (
GET /reports/sales)
β Don't use GET for:
Create resources (use POST)
Update resources (use PUT/PATCH)
Delete resources (use DELETE)
Operations with side effects
POST - Create Data
Purpose: Create new resources or process data.
Characteristics:
Not idempotent: Multiple calls create multiple resources
Not safe: Modifies server state
With body: Usually sends data in body
Returns 201: "Created" status when successful
Example: Create Resource
Usage:
Response:
POST for Custom Actions
Usage:
When to Use POST
β Use POST for:
Create new resources (
POST /users)File uploads (
POST /upload)Custom actions (
POST /users/123/activate)Complex processing (
POST /calculate)When operation is not idempotent
β Don't use POST for:
Reading data (use GET)
Complete update (use PUT)
Removal (use DELETE)
PUT - Update/Replace
Purpose: Completely replace an existing resource.
Characteristics:
Idempotent: Multiple calls have the same effect
Complete replacement: All fields must be sent
Requires ID: Usually used with
/resource/:idReturns 200: "OK" status when updated
Example: Update Complete Resource
Usage:
PUT vs POST
PUT is idempotent:
POST is not idempotent:
When to Use PUT
β Use PUT for:
Update complete resource (
PUT /users/123)Replace settings (
PUT /settings)Idempotent update operations
β Don't use PUT for:
Create resources (use POST)
Partial update (use PATCH)
Collections (
PUT /usersdoesn't make sense)
PATCH - Update Partially
Purpose: Update only some fields of a resource.
Characteristics:
Partial: Send only fields that changed
More efficient: Less data transferred
Not necessarily idempotent: Depends on implementation
Example: Partial Update
Usage:
PATCH vs PUT
Scope
Replace complete resource
Update specific fields
Fields
All fields required
Only fields that change
Idempotent
Yes
Depends
Example
PUT /users/1 (all data)
PATCH /users/1 (only email)
When to Use PATCH
β Use PATCH for:
Update few fields (
PATCH /users/123)Toggle flags (
PATCH /posts/1 {"published": true})Partial edit operations
β Don't use PATCH for:
Replace complete resource (use PUT)
Create resources (use POST)
DELETE - Remove Data
Purpose: Remove a resource.
Characteristics:
Idempotent: Deleting multiple times = deleting once
No body in response: Usually returns 204 No Content
Irreversible: (in real APIs, consider soft delete)
Example: Delete Resource
Usage:
DELETE with Confirmation
DELETE for Resource Not Found
When to Use DELETE
β Use DELETE for:
Remove resources (
DELETE /users/123)Clear data (
DELETE /cache)Logout (
DELETE /sessions/current)
β Don't use DELETE for:
Reading (use GET)
Updating (use PUT/PATCH)
Actions that don't remove data
HEAD - Get Metadata
Purpose: Get response headers without the body.
Characteristics:
Identical to GET, but no body in response
Useful for checking if resource exists
Check file size before downloading
Example
Usage:
When to Use HEAD
β Use HEAD for:
Check if resource exists
Check
Last-ModifiedorETagSee file size (
Content-Length)
OPTIONS - Discover Allowed Methods
Purpose: Discover which HTTP methods are supported.
Characteristics:
Used in CORS preflight requests
Returns allowed methods in
Allowheader
Example
Usage:
CORS Preflight
Browsers automatically make OPTIONS before "complex" requests:
Multiple Methods, Same Path
You can have the same path with different methods:
Result:
GET /usersβ lists usersPOST /usersβ creates userDELETE /usersβ removes all (careful!)
Complete RESTful API
Example of complete CRUD:
Status Codes by Method
GET
200 OK
404 Not Found
POST
201 Created
400 Bad Request, 422 Unprocessable
PUT
200 OK
404 Not Found, 400 Bad Request
PATCH
200 OK
404 Not Found, 400 Bad Request
DELETE
204 No Content
404 Not Found
HEAD
200 OK
404 Not Found
OPTIONS
200 OK
-
Best Practices
β
Do
Use the correct semantic method
GET and HEAD should not modify data
Use appropriate status codes
Implement OPTIONS for CORS
β Avoid
Methods in URL
POST for everything
Next Steps
Path Patterns - Route patterns
Response Structure - Response structure
CRUD Operations How-to - Complete CRUD
See Also
Last updated
Was this helpful?