Use RESTful Principles:
Consistent Naming Conventions:
POST https://your-domain/v1/product/
Get Product details https://your-domain/v1/product/201
PUT https://your-domain/v1/product/201/
PATCH https://your-domain/v1/product/201
DELETE https://your-domain/v1/product/201
Versioning:
Documentation:
Environment:
{
"first_name":"Jon",
"last_name":"Doe",
"age":31,
"is_admin":false
}
//For login user details:
// Correct
"user_details": {
"first_name": "Jon",
"last_name": "Doe",
"age": 31,
"is_admin": false
}
// Wrong
"user_details": [
{
"first_name": "Jon",
"last_name": "Doe",
"age": 31,
"is_admin": false
}
]
Authentication and Authorization:
HTTPS:
Request Parameters:
Response Parameters:
Rate Limiting:
Pagination and Filtering:
Asynchronous Processing:
Optimization:
Caching:
# In /etc/nginx/sites-available/default
# caching path
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=cache:10m inactive=60m;
server {
listen 8000 default_server;
listen [::]:8000 default_server;
server_name _;
# ONLY IDEMPOTENT URI IS CACHED
location ~ /read/(.*)+/(.*)$ {
proxy_pass http://example.com;
proxy_cache cache;
proxy_cache_valid any 10m;
add_header X-Proxy-Cache $upstream_cache_status;
}
# The rest of the request is passed (will not be cached)
location / {
proxy_pass http://example.com;
}
}
{
status: true,
message : “fetched data successfully.”,
Data : [{}, {}....]
}
0