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(首次必传;后续可复用旧证图片)
说明:
callsign仅表示“申请中的新呼号”,不会在用户提交时直接写入users.callsign。- 只有管理员审批通过后,新呼号才会真正生效。
- 如果提交的
callsign已被其他用户占用,接口返回409。
返回示例:
{
"code": 200,
"message": "操作证信息已提交,请等待管理员审核",
"data": {
"id": 99,
"callsign": "BG7NEW",
"file_name": "cert.pdf",
"file_size": 124312,
"upload_time": "2026-04-05 16:11:00"
}
}
GET /api/operator-certificate¶
返回 active_cert(已通过)和 pending_cert(待审/拒绝最近一条)。
两类证书对象都会返回 callsign 字段,表示该证书对应的呼号。
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": "授权码"
}