## 新增功能 ### Handler层 - ✅ CreateDirectory: 创建目录功能实现 - ✅ DeleteItem: 删除文件/目录(支持operation_id去重) - ✅ MoveItem: 移动/重命名(支持overwrite参数) - ✅ CopyItem: 复制文件/目录(支持overwrite参数) - ✅ SearchFiles: 文件搜索(支持类型过滤:photo/video) ### Service层 - ✅ CreateDirectory: 目录创建逻辑 + 路径存在检查 - ✅ DeleteItem: 文件删除逻辑 + operation_id支持 - ✅ MoveItem: 移动/重命名逻辑 + 覆盖控制 - ✅ CopyItem: 复制逻辑(文件/目录) + 大小计算 - ✅ SearchFiles: 搜索逻辑 + 类型过滤 + 性能计时 - ✅ isPhotoFile: 照片文件类型判断(12种格式) - ✅ isVideoFile: 视频文件类型判断(10种格式) ### HTTP测试文件 - 📄 tests/filesystem_api.http: 完整的API测试用例 - 文件系统浏览测试(7个用例) - 磁盘使用情况测试(2个用例) - 文件/目录操作测试(9个用例) - 文件搜索测试(6个用例) - 错误场景测试(6个用例) - 健康检查(2个用例) - 实际应用场景示例(5个用例) ## 技术细节 ### API设计 - 遵循RESTful规范 - 支持operation_id用于SSE事件去重 - 完整的错误处理和日志记录 - 支持Windows和Unix路径 ### 支持的文件类型 - **照片**: .jpg, .jpeg, .png, .gif, .bmp, .webp, .heic, .heif, .raw, .cr2, .nef, .arw - **视频**: .mp4, .avi, .mov, .wmv, .flv, .mkv, .webm, .m4v, .mpg, .mpeg ### 已实现的API端点 - GET /api/v1/filesystem/browse - GET /api/v1/filesystem/disk-usage - GET /api/v1/filesystem/search - POST /api/v1/filesystem/directory - DELETE /api/v1/filesystem/item - PUT /api/v1/filesystem/item/move - POST /api/v1/filesystem/item/copy ## 测试指南 使用 tests/filesystem_api.http 文件进行测试: 1. 确保后端服务运行在 localhost:8726 2. 使用 REST Client 或类似工具打开测试文件 3. 根据实际环境修改路径 4. 按顺序执行测试用例 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Argus HTTP API 测试文件
本目录包含了 Argus 照片管理系统的全套 HTTP API 测试文件,按功能模块进行分类。
📁 文件结构
tests/
├── README.md # 本文档
├── base.http # 基础功能测试(健康检查、环境配置)
├── library.http # 图像库管理测试
├── photo.http # 照片文件和详情接口测试
├── exif.http # EXIF信息查询测试
├── user.http # 用户管理接口测试
└── dev.http # 开发调试接口测试
🚀 快速开始
1. 环境准备
在项目根目录创建 http-client.env.json 文件:
{
"dev": {
"baseUrl": "http://localhost:8080",
"sampleHash": "your_actual_hash_here"
},
"prod": {
"baseUrl": "https://your-production-domain.com",
"sampleHash": "production_hash_here"
}
}
2. 启动服务器
go run .
3. 测试顺序
建议按以下顺序执行测试:
-
基础功能 (
base.http)- 健康检查
- API基础路由
-
图像库管理 (
library.http)- 添加图像库路径
- 启用图像库
- 开始索引
- 获取图像hash值
-
照片接口 (
photo.http)- 使用实际hash测试图像访问
- 测试各种缩略图尺寸
- 获取图像详情
-
EXIF查询 (
exif.http)- 查询EXIF信息
- 按相机、参数筛选
- GPS信息查询
-
用户管理 (
user.http)- 用户CRUD操作
- 用户查询和筛选
-
开发调试 (
dev.http)- 系统状态监控
- 性能测试
- 开发工具
📝 测试说明
变量替换
测试文件中使用了以下变量,需要替换为实际值:
{{baseUrl}}: 服务器地址 (如: http://localhost:8080){{apiBase}}: API基础路径 ({{baseUrl}}/api/v1){{sampleHash}}: 实际的图像hash值
获取实际Hash值
执行 library.http 中的图像库索引后,从响应中获取实际的图像hash值,然后替换测试文件中的 sample_hash_12345。
文件路径注意事项
- Windows: 使用反斜杠
D:\\Pictures\\sample.jpg或正斜杠D:/Pictures/sample.jpg - Linux/Mac: 使用正斜杠
/home/user/Pictures/sample.jpg - 确保路径中的图像文件真实存在
🔧 IDE 配置
VS Code
安装 REST Client 扩展,可以直接在编辑器中执行HTTP请求。
IntelliJ IDEA / WebStorm
内置HTTP客户端支持,可以直接运行 .http 文件。
命令行工具
也可以使用 curl 执行测试:
# 健康检查
curl http://localhost:8080/health
# 获取图像
curl "http://localhost:8080/api/v1/photo/your_hash?format=thumbnail&size=400x400"
# 获取图像详情
curl "http://localhost:8080/api/v1/assets/your_hash"
📊 响应格式
成功响应
{
"code": 200,
"message": "Success",
"data": { ... }
}
错误响应
{
"code": 404,
"message": "Photo not found",
"error": "详细错误信息"
}
图像文件响应
图像接口直接返回二进制数据,HTTP头包含正确的 Content-Type。
⚠️ 注意事项
- 数据安全: 测试前备份重要数据
- 路径检查: 确保文件路径存在且可访问
- 性能影响: 大量并发测试可能影响系统性能
- 开发接口:
dev.http中的接口仅供开发环境使用 - 权限要求: 某些操作可能需要特定权限
🐛 常见问题
连接失败
- 检查服务器是否启动
- 确认端口号正确
- 检查防火墙设置
404 错误
- 确认API路径正确
- 检查图像hash是否有效
- 验证图像文件是否存在
缩略图生成失败
- 检查ImageMagick/LibVips安装
- 确认原图文件可读
- 查看系统日志获取详细错误
EXIF解析失败
- 检查ExifTool安装
- 确认图像文件包含EXIF数据
- 验证文件格式支持