6.6 KiB
6.6 KiB
Config API 测试指南
问题解决
问题: API文档打不开
原因: adminConfigRoutes.js 中使用了错误的中间件函数名 checkPermission,应该使用 requireAdmin
解决方案: 已修复,将 checkPermission 替换为 requireAdmin
问题: config表不存在
原因: 数据库迁移中包含了config表定义,但可能没有正确执行
解决方案: 运行 node create-config-table.js 创建表并初始化默认配置
API访问地址
1. Swagger UI (推荐)
http://localhost:3000/api-docs
在浏览器中打开,可以查看所有API文档并进行测试
2. OpenAPI JSON
http://localhost:3000/api-docs.json
获取完整的OpenAPI规范JSON
3. OpenAPI YAML
http://localhost:3000/api-docs.yaml
获取完整的OpenAPI规范YAML
测试Config API
方法1: 使用测试脚本
cd backend
node test-config-api.js
方法2: 使用curl命令
测试公开配置API (无需认证)
# 获取所有公开配置
curl http://localhost:3000/api/v1/config
响应示例:
{
"code": 0,
"message": "Configuration retrieved successfully",
"data": {
"app_logo": "",
"about_us_image": "",
"app_name": "Overseas Appointment System",
"contact_phone": "",
"contact_email": ""
}
}
测试管理后台配置API (需要认证)
步骤1: 登录获取token
curl -X POST http://localhost:3000/api/v1/admin/auth/login \
-H "Content-Type: application/json" \
-d "{\"username\":\"admin\",\"password\":\"admin123\"}"
响应示例:
{
"code": 0,
"message": "Login successful",
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"admin": {
"id": "...",
"username": "admin",
"role": "super_admin"
}
}
}
步骤2: 使用token访问配置API
# 设置token变量
TOKEN="your_token_here"
# 获取所有配置
curl http://localhost:3000/api/v1/admin/config \
-H "Authorization: Bearer $TOKEN"
# 获取单个配置
curl http://localhost:3000/api/v1/admin/config/app_name \
-H "Authorization: Bearer $TOKEN"
# 更新配置
curl -X PUT http://localhost:3000/api/v1/admin/config/app_name \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d "{\"value\":\"My App\",\"type\":\"string\",\"category\":\"general\",\"description\":\"Application name\"}"
# 删除配置 (谨慎使用)
curl -X DELETE http://localhost:3000/api/v1/admin/config/custom_key \
-H "Authorization: Bearer $TOKEN"
方法3: 使用Swagger UI测试
- 打开浏览器访问: http://localhost:3000/api-docs
- 找到 "Config" 或 "Admin - Config" 标签
- 点击要测试的接口
- 点击 "Try it out" 按钮
- 填写参数
- 点击 "Execute" 执行请求
- 查看响应结果
对于需要认证的接口:
- 先测试登录接口获取token
- 点击页面右上角的 "Authorize" 按钮
- 输入
Bearer your_token_here - 点击 "Authorize"
- 现在可以测试需要认证的接口了
管理后台测试
启动管理后台
cd admin
npm run dev
访问: http://localhost:5173 (或显示的端口)
登录管理后台
- 用户名:
admin - 密码:
admin123(或你设置的密码)
访问系统配置页面
- 登录后,点击左侧菜单的 "系统配置"
- 可以看到三个标签页:
- 外观配置: 上传Logo和关于我们图片
- 基本信息: 设置应用名称
- 联系方式: 设置联系电话和邮箱
测试配置功能
-
上传Logo
- 点击Logo上传区域
- 选择图片文件 (PNG/JPG, 最大5MB)
- 等待上传完成
- 点击"保存外观配置"
-
修改应用名称
- 切换到"基本信息"标签
- 修改应用名称
- 点击"保存基本信息"
-
设置联系方式
- 切换到"联系方式"标签
- 输入联系电话和邮箱
- 点击"保存联系方式"
-
验证配置生效
- 刷新页面,检查配置是否保存
- 或者调用公开API查看配置
常见问题
Q: API文档页面空白或加载失败
A: 检查以下几点:
- 后端服务是否正常运行:
http://localhost:3000/health - 查看后端日志是否有错误
- 检查浏览器控制台是否有JavaScript错误
- 尝试清除浏览器缓存
Q: 配置保存后不生效
A:
- 检查Redis是否正常运行
- 清除Redis缓存:
redis-cli FLUSHDB - 重启后端服务
Q: 图片上传失败
A:
- 检查
backend/uploads目录是否存在且有写入权限 - 检查文件大小是否超过5MB
- 检查文件格式是否为PNG或JPG
- 查看后端日志获取详细错误信息
Q: 401 Unauthorized错误
A:
- 确认已登录并获取token
- 检查token是否过期
- 确认请求头格式:
Authorization: Bearer <token> - 检查用户是否有管理员权限
Q: 403 Forbidden错误
A:
- 确认用户角色是否为admin或super_admin
- 检查RBAC权限配置
- 查看后端日志获取详细权限信息
数据库操作
查看config表数据
使用数据库客户端或命令行:
USE overseas_appointment;
SELECT * FROM config;
手动插入配置
INSERT INTO config (id, `key`, value, type, category, description, created_at, updated_at)
VALUES (UUID(), 'custom_key', 'custom_value', 'string', 'general', 'Custom configuration', NOW(), NOW());
清空配置表 (谨慎!)
TRUNCATE TABLE config;
然后运行初始化脚本恢复默认配置:
node create-config-table.js
开发建议
添加新配置项
- 在
configService.js的initializeDefaults方法中添加默认值 - 在管理后台页面添加对应的表单字段
- 如需公开给小程序,在
getPublicConfigs方法中添加配置键名 - 更新API文档
配置缓存策略
- 默认缓存时间: 1小时
- 修改配置时自动清除缓存
- 可在
configService.js中调整CACHE_TTL常量
安全建议
- 不要在公开API中暴露敏感配置
- 定期备份配置数据
- 重要配置修改前先记录当前值
- 使用环境变量存储真正的敏感信息(如密钥)
相关文件
- API文档:
backend/src/docs/admin-config.docs.js,backend/src/docs/config.docs.js - 路由:
backend/src/routes/adminConfigRoutes.js,backend/src/routes/configRoutes.js - 控制器:
backend/src/controllers/adminConfigController.js,backend/src/controllers/configController.js - 服务:
backend/src/services/configService.js - 模型:
backend/src/models/Config.js - 前端页面:
admin/src/views/config/index.vue - 测试脚本:
backend/test-config-api.js,backend/create-config-table.js - 完整文档:
CONFIG_MANAGEMENT.md