- 实现用户登录、登出、密码修改等认证功能 - 添加会话管理和权限控制中间件 - 创建图片批注组件和相关API路由 - 实现批注的增删改查功能 - 添加Docker和Git忽略配置文件 - 创建系统架构文档和开发约定说明 - 集成认证模块到前端应用路由中
3.3 KiB
3.3 KiB
API 接入指南
认证方式
工作台网页使用 HttpOnly Cookie 会话。外部客户端使用:
Authorization: Bearer dd_live_xxx
API Key 明文只在创建时返回一次,数据库仅保存 SHA-256 哈希。平台管理员创建平台级 Key;组管理员创建本组项目级 Key。失效或越权请求会返回 401 或 403。
主要路由
| 路由组 | 用途 |
|---|---|
/api/auth/* |
登录、退出、当前账号、修改密码 |
/api/management/groups |
运营组创建、改名、启停和管理员更换 |
/api/management/users |
账号创建、改名、启停和重置密码 |
/api/management/api-keys |
API Key 创建、查询和吊销 |
/api/management/audit-logs |
审计日志查询 |
/api/management/storage-configs |
COS 配置、连接测试和启用 |
/api/projects |
项目创建、查询和编辑 |
/api/projects/:projectId/collections |
作品交付集创建、查询和编辑 |
/api/notes |
作品查询与 multipart 上传 |
/api/notes/:noteId/versions |
上传作品新版本 |
/api/notes/:noteId/status |
草稿与待验收状态切换 |
/api/notes/:noteId/text-annotations |
标题/正文批注 |
/api/images/:imageId/annotations |
图片坐标批注 |
/api/review/:slug/* |
客户登录、浏览、反馈与验收 |
/api/health |
数据库就绪检查 |
创建项目
平台级 API Key 可以指定目标运营组。项目级 Key 不能创建项目。
curl -X POST http://localhost:3001/api/projects \
-H "Authorization: Bearer $DELIVERY_DESK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"7 月内容计划","slug":"july-content","groupId":1,"client_description":"客户可见说明"}'
slug 仅支持小写字母、数字和连字符,并作为客户验收链接的一部分。
创建作品交付集
curl -X POST http://localhost:3001/api/projects/1/collections \
-H "Authorization: Bearer $DELIVERY_DESK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"2026 年 7 月交付","client_description":"本月交付内容"}'
上传作品
作品上传使用 multipart/form-data,至少一张、最多 30 张图片,单图最大 20 MB。图片数组顺序就是初始展示顺序,第一张为封面。
curl -X POST http://localhost:3001/api/notes \
-H "Authorization: Bearer $DELIVERY_DESK_API_KEY" \
-F "collectionId=1" \
-F "title=作品标题" \
-F "description=正文内容" \
-F "tags=用户填写的标签原文" \
-F "images=@./01.jpg" \
-F "images=@./02.jpg"
当前接受 JPEG、PNG、GIF、WebP 和 AVIF。标签按一段原文保存和展示,不会自动添加 # 或拆分为标签库。
创建新版本
curl -X POST http://localhost:3001/api/notes/12/versions \
-H "Authorization: Bearer $DELIVERY_DESK_API_KEY" \
-F "title=修改后的标题" \
-F "description=修改后的正文" \
-F "tags=修改后的标签原文" \
-F "images=@./v2-01.jpg"
批注绑定作品版本或具体图片,不会因新版本覆盖历史验收证据。
错误响应
错误统一以 JSON 返回:
{ "error": "错误说明" }
常见状态码:400 输入无效、401 未认证、403 越权、404 资源不存在、409 唯一性或状态冲突、500 服务端错误。