一键导入
api-design-principles
// Apply REST/HTTP API design conventions when implementing endpoints, handlers, middleware, request validation, or response formatting. Covers resource naming, status codes, error formats, versioning, and pagination.
// Apply REST/HTTP API design conventions when implementing endpoints, handlers, middleware, request validation, or response formatting. Covers resource naming, status codes, error formats, versioning, and pagination.
[HINT] 下载包含 SKILL.md 和所有相关文件的完整技能目录
| name | api-design-principles |
| description | Apply REST/HTTP API design conventions when implementing endpoints, handlers, middleware, request validation, or response formatting. Covers resource naming, status codes, error formats, versioning, and pagination. |
| user-invocable | false |
Resource-Based URLs:
/api/{version}/users, /api/{version}/orders/api/{version}/users/:userId/orders/api/{version}/getUser ❌ → /api/{version}/users/:id ✅HTTP Methods:
Versioning:
/api/{version}/users e.g./api/v1/users (explicit, clear)Pagination:
?cursor=abc123 (better for real-time data)?page=2&limit=20 (simpler, less accurate for changing data)Filtering and Sorting:
?status=active&role=admin?sort=created_at:desc,name:asc?q=search+termSuccess Codes:
Client Error Codes (4xx) - User Can Fix:
Validation Errors (400 Bad Request):
Authentication Errors (401 Unauthorized):
Authorization Errors (403 Forbidden):
Not Found Errors (404 Not Found):
Business Rule Violations (409 Conflict / 422 Unprocessable Entity):
Rate Limiting (429 Too Many Requests):
Server Error Codes (5xx) - System Issue:
Infrastructure Errors (500/502/503):
{
"data": { /* resource or array of resources */ },
"meta": {
"total": 100,
"page": 1,
"perPage": 20
},
"links": {
"self": "/api/v1/users?page=1",
"next": "/api/v1/users?page=2",
"prev": null
}
}
All API errors must follow a consistent envelope structure, matching the success format where possible or using a standard error envelope.
{
"status": "error", // Transport: Always "error" or "fail"
"code": 400, // Transport: Redundant HTTP Status
"error": { // Domain: The actual business problem
"code": "VALIDATION_ERROR", // Machine-readable business code (UPPER_SNAKE)
"message": "Invalid email format", // Human-readable message
"details": { // Optional: Structured context
"field": "email",
"reason": "Must be a valid address"
},
"correlationId": "req-1234567890", // Ops: Traceability
"doc_url": "https://..." // Optional: Help link
}
}