fix:修复API状态码和限流配置问题
- 修复登录控制器HTTP状态码问题,现在根据业务结果返回正确状态码 - 调整注册接口限流配置,从3次/5分钟放宽至10次/5分钟(开发环境) - 新增清除限流记录的调试接口,便于开发测试 - 更新API文档,反映状态码修复和限流调整 - 添加测试脚本验证修复效果 主要修复: - 业务失败时返回400/401而非200/201状态码 - 注册、登录、GitHub OAuth等接口现在正确处理错误状态码 - 限流配置更适合开发环境测试需求
This commit is contained in:
@@ -45,6 +45,7 @@
|
||||
- `POST /auth/verify-email` - 验证邮箱验证码
|
||||
- `POST /auth/resend-email-verification` - 重新发送邮箱验证码
|
||||
- `POST /auth/debug-verification-code` - 调试验证码信息(开发环境)
|
||||
- `POST /auth/debug-clear-throttle` - 清除限流记录(开发环境)
|
||||
|
||||
### 3. 管理员接口 (Admin)
|
||||
- `POST /admin/auth/login` - 管理员登录
|
||||
@@ -161,6 +162,11 @@
|
||||
|
||||
**功能描述**: 创建新用户账户
|
||||
|
||||
**重要说明**:
|
||||
- 如果提供邮箱,必须先调用发送验证码接口获取验证码
|
||||
- 验证码验证失败会返回400状态码,而不是201
|
||||
- 注册成功返回201,失败返回400
|
||||
|
||||
#### 请求参数
|
||||
|
||||
```json
|
||||
@@ -169,7 +175,7 @@
|
||||
"password": "password123",
|
||||
"nickname": "测试用户",
|
||||
"email": "test@example.com",
|
||||
"phone": "+8613800138000"
|
||||
"email_verification_code": "123456"
|
||||
}
|
||||
```
|
||||
|
||||
@@ -178,8 +184,9 @@
|
||||
| username | string | 是 | 用户名,只能包含字母、数字和下划线,长度1-50字符 |
|
||||
| password | string | 是 | 密码,必须包含字母和数字,长度8-128字符 |
|
||||
| nickname | string | 是 | 用户昵称,长度1-50字符 |
|
||||
| email | string | 否 | 邮箱地址 |
|
||||
| email | string | 否 | 邮箱地址(如果提供,必须先获取验证码) |
|
||||
| phone | string | 否 | 手机号码 |
|
||||
| email_verification_code | string | 条件必填 | 邮箱验证码,提供邮箱时必填 |
|
||||
|
||||
#### 响应示例
|
||||
|
||||
@@ -206,15 +213,30 @@
|
||||
}
|
||||
```
|
||||
|
||||
**失败响应** (409):
|
||||
**失败响应** (400):
|
||||
```json
|
||||
{
|
||||
"success": false,
|
||||
"message": "用户名已存在",
|
||||
"message": "提供邮箱时必须提供邮箱验证码",
|
||||
"error_code": "REGISTER_FAILED"
|
||||
}
|
||||
```
|
||||
|
||||
**频率限制响应** (429):
|
||||
```json
|
||||
{
|
||||
"success": false,
|
||||
"message": "注册请求过于频繁,请5分钟后再试",
|
||||
"error_code": "TOO_MANY_REQUESTS",
|
||||
"throttle_info": {
|
||||
"limit": 10,
|
||||
"window_seconds": 300,
|
||||
"current_requests": 10,
|
||||
"reset_time": "2025-12-24T11:26:41.136Z"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### 3. GitHub OAuth登录
|
||||
|
||||
**接口地址**: `POST /auth/github`
|
||||
@@ -504,6 +526,28 @@
|
||||
}
|
||||
```
|
||||
|
||||
#### 11. 清除限流记录
|
||||
|
||||
**接口地址**: `POST /auth/debug-clear-throttle`
|
||||
|
||||
**功能描述**: 清除所有限流记录(仅开发环境使用)
|
||||
|
||||
**注意**: 此接口用于开发测试,清除所有IP的频率限制记录
|
||||
|
||||
#### 请求参数
|
||||
|
||||
无
|
||||
|
||||
#### 响应示例
|
||||
|
||||
**成功响应** (200):
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"message": "限流记录已清除"
|
||||
}
|
||||
```
|
||||
|
||||
### 管理员接口
|
||||
|
||||
**注意**:所有管理员接口都需要在 Header 中携带 `Authorization: Bearer <token>`,且用户角色必须为管理员 (role=9)。
|
||||
@@ -1545,9 +1589,12 @@ curl -X GET http://localhost:3000/admin/logs/archive \
|
||||
|
||||
| 接口类型 | 限制规则 | 时间窗口 | 说明 |
|
||||
|----------|----------|----------|------|
|
||||
| 登录接口 | 2次/分钟 | 60秒 | 防止暴力破解 |
|
||||
| 登录接口 | 5次/分钟 | 60秒 | 防止暴力破解 |
|
||||
| 注册接口 | 10次/5分钟 | 300秒 | 防止批量注册(开发环境已放宽) |
|
||||
| 发送验证码 | 1次/分钟 | 60秒 | 防止验证码滥发 |
|
||||
| 密码重置 | 3次/小时 | 3600秒 | 限制密码重置频率 |
|
||||
| 管理员操作 | 10次/分钟 | 60秒 | 限制管理员操作频率 |
|
||||
| 一般接口 | 100次/分钟 | 60秒 | 防止接口滥用 |
|
||||
| 一般接口 | 30次/分钟 | 60秒 | 通用API限制 | 100次/分钟 | 60秒 | 防止接口滥用 |
|
||||
|
||||
#### 响应示例
|
||||
|
||||
@@ -1555,12 +1602,23 @@ curl -X GET http://localhost:3000/admin/logs/archive \
|
||||
|
||||
```json
|
||||
{
|
||||
"statusCode": 429,
|
||||
"message": "ThrottlerException: Too Many Requests",
|
||||
"error": "Too Many Requests"
|
||||
"success": false,
|
||||
"message": "注册请求过于频繁,请5分钟后再试",
|
||||
"error_code": "TOO_MANY_REQUESTS",
|
||||
"throttle_info": {
|
||||
"limit": 10,
|
||||
"window_seconds": 300,
|
||||
"current_requests": 10,
|
||||
"reset_time": "2025-12-24T11:26:41.136Z"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**重要说明**:
|
||||
- 频率限制基于IP地址
|
||||
- 超过限制后需要等待到重置时间才能再次请求
|
||||
- 开发环境下注册接口限制已放宽至10次/5分钟
|
||||
|
||||
### 2. 维护模式 (Maintenance Mode)
|
||||
|
||||
系统支持维护模式,在系统升级或维护期间暂停服务:
|
||||
@@ -2023,13 +2081,16 @@ echo "📈 性能测试完成,请查看上述结果"
|
||||
- 重新整理接口分类,将用户管理接口独立分类
|
||||
- 确保文档与实际运行的服务完全一致
|
||||
- 验证所有接口的请求参数和响应格式
|
||||
- **修复HTTP状态码问题**:所有接口现在根据业务结果返回正确状态码
|
||||
- **更新限流配置**:注册接口限制调整为10次/5分钟(开发环境)
|
||||
- **应用状态接口** (1个)
|
||||
- `GET /` - 获取应用状态
|
||||
- **用户认证接口** (10个)
|
||||
- **用户认证接口** (11个)
|
||||
- 用户登录、注册、GitHub OAuth
|
||||
- 密码重置和修改功能
|
||||
- 邮箱验证相关接口
|
||||
- 调试验证码接口
|
||||
- **新增**:清除限流记录接口(开发环境)
|
||||
- **管理员接口** (6个)
|
||||
- 管理员登录和用户管理
|
||||
- 用户列表和详情查询
|
||||
@@ -2041,13 +2102,15 @@ echo "📈 性能测试完成,请查看上述结果"
|
||||
- 批量用户状态修改接口
|
||||
- 用户状态统计接口
|
||||
- **安全增强功能**
|
||||
- 频率限制中间件 (Rate Limiting)
|
||||
- 频率限制中间件 (Rate Limiting) - 已调整配置
|
||||
- 维护模式中间件 (Maintenance Mode)
|
||||
- 内容类型验证中间件 (Content Type Validation)
|
||||
- 请求超时拦截器 (Request Timeout)
|
||||
- 用户状态检查和权限控制
|
||||
- **总计接口数量**: 20个API接口
|
||||
- **修复**:HTTP状态码现在正确反映业务执行结果
|
||||
- **总计接口数量**: 21个API接口
|
||||
- 完善错误代码和使用示例
|
||||
- 修复路由冲突问题
|
||||
- 确保文档与实际测试效果一致
|
||||
- **重要修复**:解决了业务失败但返回成功状态码的问题
|
||||
|
||||
|
||||
Reference in New Issue
Block a user