API 参考
本节提供有关可用 API 端点的详细信息。
认证: 标记为 需要 API 密钥
的端点需要在请求头中包含一个有效的 X-API-Key
,其值需与您配置中的 API_KEY
相匹配。
GET /api/random
获取一个随机图片的 URL,该 URL 会根据浏览器能力(WebP/AVIF 支持)进行适配,并可选择按标签过滤。
- 方法:
GET
- 认证: 不需要
- 查询参数:
tag
(字符串, 可选): 按特定标签筛选图片。
- 成功响应:
- 状态码:
200 OK
- Content-Type:
text/plain
- 响应体: 图片的 URL (例如:
http://localhost:8686/static/images/landscape/webp/image-id.webp
)
- 状态码:
- 错误响应:
- 状态码:
404 Not Found
- 如果没有图片符合条件。 - 状态码:
500 Internal Server Error
- 如果发生意外错误。
- 状态码:
POST /api/upload
上传一张或多张新图片,进行处理并存储。
- 方法:
POST
- 认证:
需要 API 密钥
- 请求体:
multipart/form-data
images[]
(文件, 必需): 一个或多个要上传的图片文件。expiryMinutes
(整数, 可选): 图片过期并被删除前的分钟数。0 或省略表示永不过期。tags
(字符串数组, 可选): 与上传图片关联的标签。
- 成功响应:
- 状态码:
200 OK
- Content-Type:
application/json
- 响应体: 包含成功消息的 JSON 对象。
{"message":"Upload successful, processing started."}
(上传成功,处理已开始)
- 状态码:
- 错误响应:
- 状态码:
400 Bad Request
- 缺少images[]
字段、无效的expiryMinutes
或文件过多。 - 状态码:
401 Unauthorized
- API 密钥无效或缺失。 - 状态码:
500 Internal Server Error
- 文件保存或处理启动过程中出错。
- 状态码:
POST /api/delete-image
删除指定的图片及其所有关联格式(原始、WebP、AVIF)和元数据。
- 方法:
POST
- 认证:
需要 API 密钥
- 请求体:
application/json
id
(字符串, 必需): 要删除图片的唯一 ID。storageType
(字符串, 必需): 图片所在的存储类型 (local
或s3
)。
- 成功响应:
- 状态码:
200 OK
- Content-Type:
application/json
- 响应体:
{"message":"Image deleted successfully"}
(图片删除成功)
- 状态码:
- 错误响应:
- 状态码:
400 Bad Request
- 无效的 JSON 负载或缺少字段。 - 状态码:
401 Unauthorized
- API 密钥无效或缺失。 - 状态码:
404 Not Found
- 找不到指定 ID 的图片。 - 状态码:
500 Internal Server Error
- 从存储中删除或移除元数据时出错。
- 状态码:
POST /api/validate-api-key
验证提供的 API 密钥。
- 方法:
POST
- 认证: 检查
X-API-Key
请求头。 - 成功响应:
- 状态码:
200 OK
- Content-Type:
application/json
- 响应体:
{"valid": true}
- 状态码:
- 错误响应:
- 状态码:
401 Unauthorized
- API 密钥无效或缺失。 - 响应体:
{"valid": false}
- 状态码:
GET /api/images
列出所有已上传的图片,可选择按标签过滤。
- 方法:
GET
- 认证:
需要 API 密钥
- 查询参数:
tag
(字符串, 可选): 按特定标签筛选图片。
- 成功响应:
- 状态码:
200 OK
- Content-Type:
application/json
- 响应体: 图片元数据对象的 JSON 数组。
- 状态码:
- 错误响应:
- 状态码:
401 Unauthorized
- API 密钥无效或缺失。 - 状态码:
500 Internal Server Error
- 读取元数据时出错。
- 状态码:
GET /api/config
获取当前的(非敏感)系统配置。
- 方法:
GET
- 认证:
需要 API 密钥
- 成功响应:
- 状态码:
200 OK
- Content-Type:
application/json
- 响应体: 包含配置详情的 JSON 对象,例如
STORAGE_TYPE
,MAX_UPLOAD_COUNT
,REDIS_ENABLED
等。(敏感密钥如API_KEY
,S3_SECRET_KEY
会被省略)。
- 状态码:
- 错误响应:
- 状态码:
401 Unauthorized
- API 密钥无效或缺失。
- 状态码:
POST /api/trigger-cleanup
手动触发清理过期图片的进程。
- 方法:
POST
- 认证:
需要 API 密钥
- 成功响应:
- 状态码:
200 OK
- Content-Type:
application/json
- 响应体:
{"message":"Expired image cleanup triggered."}
(过期图片清理已触发)
- 状态码:
- 错误响应:
- 状态码:
401 Unauthorized
- API 密钥无效或缺失。
- 状态码:
GET /api/tags
获取当前与图片关联的所有唯一标签列表。
- 方法:
GET
- 认证:
需要 API 密钥
- 成功响应:
- 状态码:
200 OK
- Content-Type:
application/json
- 响应体: 唯一标签字符串的 JSON 数组。
["nature", "city", "portrait", "landscape"]
- 状态码:
- 错误响应:
- 状态码:
401 Unauthorized
- API 密钥无效或缺失。 - 状态码:
500 Internal Server Error
- 检索标签时出错。
- 状态码:
GET /api/debug/tags
获取详细的标签信息,显示每个标签关联的图片。(主要用于调试)。
- 方法:
GET
- 认证:
需要 API 密钥
- 成功响应:
- 状态码:
200 OK
- Content-Type:
application/json
- 响应体: JSON 对象,其中键是标签,值是图片 ID 数组。
{"nature": ["id1", "id3"], "city": ["id2"]}
- 状态码:
- 错误响应:
- 状态码:
401 Unauthorized
- API 密钥无效或缺失。 - 状态码:
500 Internal Server Error
- 检索标签详情时出错。
- 状态码: