# 🌐 API 使用指南 ## 认证机制 ### 1. 用户注册 ```bash curl -X POST http://localhost:8080/api/v1/auth/register \ -H "Content-Type: application/json" \ -d '{ "username": "testuser", "email": "test@example.com", "password": "Test123!@#" }' ``` ### 2. 用户登录 ```bash curl -X POST http://localhost:8080/api/v1/auth/login \ -H "Content-Type: application/json" \ -d '{ "username": "testuser", "password": "Test123!@#" }' ``` 响应示例: ```json { "status": "success", "data": { "access_token": "eyJhbGciOiJIUzI1NiIs...", "refresh_token": "eyJhbGciOiJIUzI1NiIs...", "expires_in": 86400, "user": { "id": 1, "username": "testuser", "email": "test@example.com" } }, "request_id": "req_123456789", "timestamp": "2024-01-01T00:00:00Z" } ``` ### 3. 使用访问令牌 ```bash curl -X GET http://localhost:8080/api/v1/users/profile \ -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." ``` ## 用户管理 API ### 获取用户列表 ```bash curl -X GET "http://localhost:8080/api/v1/users?page=1&limit=10&search=test" \ -H "Authorization: Bearer " ``` ### 获取用户详情 ```bash curl -X GET http://localhost:8080/api/v1/users/1 \ -H "Authorization: Bearer " ``` ### 更新用户信息 ```bash curl -X PUT http://localhost:8080/api/v1/users/1 \ -H "Authorization: Bearer " \ -H "Content-Type: application/json" \ -d '{ "username": "newusername", "email": "newemail@example.com" }' ``` ### 修改密码 ```bash curl -X POST http://localhost:8080/api/v1/users/change-password \ -H "Authorization: Bearer " \ -H "Content-Type: application/json" \ -d '{ "current_password": "oldpassword", "new_password": "newpassword123" }' ``` ### 删除用户 ```bash curl -X DELETE http://localhost:8080/api/v1/users/1 \ -H "Authorization: Bearer " ``` ## 响应格式 ### 成功响应 ```json { "status": "success", "data": { // 响应数据 }, "request_id": "req_123456789", "timestamp": "2024-01-01T00:00:00Z" } ``` ### 分页响应 ```json { "status": "success", "data": { "items": [...], "pagination": { "page": 1, "limit": 10, "total": 100, "total_pages": 10 } }, "request_id": "req_123456789", "timestamp": "2024-01-01T00:00:00Z" } ``` ### 错误响应 ```json { "status": "error", "error": { "code": "VALIDATION_ERROR", "message": "请求参数无效", "details": { "username": ["用户名不能为空"], "email": ["邮箱格式不正确"] } }, "request_id": "req_123456789", "timestamp": "2024-01-01T00:00:00Z" } ``` ## 常用查询参数 ### 分页参数 - `page`: 页码,从 1 开始 - `limit`: 每页数量,默认 10,最大 100 - `sort`: 排序字段,如 `created_at` - `order`: 排序方向,`asc` 或 `desc` 示例: ```bash GET /api/v1/users?page=2&limit=20&sort=created_at&order=desc ``` ### 搜索参数 - `search`: 关键词搜索 - `filter`: 字段过滤 示例: ```bash GET /api/v1/users?search=john&filter=status:active ``` ### 时间范围参数 - `start_date`: 开始时间,ISO 8601 格式 - `end_date`: 结束时间,ISO 8601 格式 示例: ```bash GET /api/v1/users?start_date=2024-01-01T00:00:00Z&end_date=2024-01-31T23:59:59Z ``` ## HTTP 状态码 ### 成功状态码 - `200 OK`: 请求成功 - `201 Created`: 创建成功 - `202 Accepted`: 请求已接受,正在处理 - `204 No Content`: 成功,无返回内容 ### 客户端错误 - `400 Bad Request`: 请求参数错误 - `401 Unauthorized`: 未认证 - `403 Forbidden`: 无权限 - `404 Not Found`: 资源不存在 - `409 Conflict`: 资源冲突 - `422 Unprocessable Entity`: 请求格式正确但语义错误 - `429 Too Many Requests`: 请求过于频繁 ### 服务器错误 - `500 Internal Server Error`: 服务器内部错误 - `502 Bad Gateway`: 网关错误 - `503 Service Unavailable`: 服务不可用 - `504 Gateway Timeout`: 网关超时 ## API 测试 ### 使用 Postman 1. 导入 API 集合文件(如果有) 2. 设置环境变量: - `base_url`: http://localhost:8080 - `access_token`: 从登录接口获取 ### 使用 curl 脚本 创建测试脚本 `test_api.sh`: ```bash #!/bin/bash BASE_URL="http://localhost:8080" ACCESS_TOKEN="" # 登录获取token login() { response=$(curl -s -X POST "$BASE_URL/api/v1/auth/login" \ -H "Content-Type: application/json" \ -d '{"username":"admin","password":"admin123"}') ACCESS_TOKEN=$(echo $response | jq -r '.data.access_token') echo "Token: $ACCESS_TOKEN" } # 测试用户API test_users() { echo "Testing Users API..." # 获取用户列表 curl -s -X GET "$BASE_URL/api/v1/users" \ -H "Authorization: Bearer $ACCESS_TOKEN" | jq # 创建用户 curl -s -X POST "$BASE_URL/api/v1/users" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{"username":"testuser","email":"test@example.com","password":"test123"}' | jq } # 执行测试 login test_users ``` ## API 文档 启动服务后,访问以下地址获取完整 API 文档: - **Swagger UI**: http://localhost:8080/swagger/ - **API 规范**: http://localhost:8080/api/docs - **健康检查**: http://localhost:8080/api/v1/health ## 限流和配额 ### 请求限制 - 默认每分钟 100 个请求 - 突发请求限制 50 个 - 超出限制返回 429 状态码 ### 提高限制 如需提高限制,请联系管理员或在配置文件中调整: ```yaml rate_limit: enabled: true requests_per_minute: 200 burst: 100 ``` ## 错误处理 ### 常见错误及解决方案 1. **401 Unauthorized** - 检查 Token 是否有效 - 确认 Token 格式正确 - 验证 Token 是否过期 2. **403 Forbidden** - 检查用户权限 - 确认访问的资源是否允许 3. **429 Too Many Requests** - 降低请求频率 - 实现指数退避重试 4. **500 Internal Server Error** - 检查服务器日志 - 确认请求参数格式 - 联系技术支持