07. 资源上传与站点配置¶
1. 通用上传(JWT)¶
POST /api/upload/file¶
multipart/form-data 字段:
- file:文件
- file_type:avatar / other / 自定义
返回示例:
{
"code": 200,
"message": "上传成功",
"data": {
"file_name": "avatar.jpg",
"file_size": 53211,
"file_type": "avatar",
"minio_path": "uploads/avatar/2026/04/xxx.jpg",
"file_url": "https://...",
"thumbnail_url": "https://..."
}
}
2. 操作证上传与查询(JWT)¶
POST /api/upload/operator-certificate¶
multipart/form-data 字段:
- callsign(可选)
- file(首次必传;后续可复用旧证图片)
返回示例:
{
"code": 200,
"message": "操作证信息已提交,请等待管理员审核",
"data": {
"id": 99,
"file_name": "cert.pdf",
"file_size": 124312,
"upload_time": "2026-04-05 16:11:00"
}
}
GET /api/operator-certificate¶
返回 active_cert(已通过)和 pending_cert(待审/拒绝最近一条)。
3. 站点 Logo/Favicon(Admin)¶
POST /api/upload/logo¶
multipart/form-data:file
POST /api/upload/favicon¶
multipart/form-data:file
4. 资源中心(Admin)¶
管理端¶
GET /api/assets(管理员列表,参数parent_id)POST /api/assets/folderPOST /api/assets/upload(multipart/form-data:parent_id+file+name+remark)PUT /api/assets/:idPUT /api/assets/:id/movePOST /api/assets/:id/replaceDELETE /api/assets/:id
示例:创建文件夹
{ "name": "客户端安装包", "parent_id": null, "remark": "发布目录" }
示例:移动资源
{ "target_parent_id": 12 }
前台公开下载¶
GET /api/assets/treeGET /api/assets/folder/:idGET /api/assets/:id/download
下载链接返回示例:
{
"code": 200,
"message": "获取成功",
"data": {
"name": "draarl-client.exe",
"size": 51200321,
"mime_type": "application/octet-stream",
"download_url": "https://...presigned..."
}
}
5. 站点配置接口¶
公开读取¶
GET /api/config/public
返回示例:
{
"code": 200,
"message": "获取成功",
"data": {
"icp": { "icp": "粤ICP备xxxx号" },
"systemInfo": { "name": "DraARL", "logo_url": "https://...", "favicon_url": "https://..." },
"sso_enabled": true,
"sso_name": "Keycloak"
}
}
已登录读取¶
GET /api/config/category/:category
管理员配置(Admin)¶
PUT /api/configPUT /api/config/icpPUT /api/config/systemPUT /api/config/aprsPUT /api/config/openaiGET /api/config/allGET /api/config/systemGET /api/config/aprsGET /api/config/openaiGET /api/config/aprs/logsDELETE /api/config/logoDELETE /api/config/faviconGET /api/config/smtpPUT /api/config/smtp
SMTP 更新请求示例:
{
"host": "smtp.qq.com",
"port": 465,
"use_ssl": true,
"insecure_skip_verify": false,
"sender_name": "DraARL",
"sender_email": "noreply@example.com",
"password": "授权码"
}