# circuit-virtual-lab-server 基于 Express + Prisma + PostgreSQL 的“虚拟电路实验室”后端,支持用户系统与“模型广场”。依赖管理使用 Bun。 ## 主要技术 - Bun(运行与依赖管理) - Express(HTTP API) - Prisma(ORM) + PostgreSQL(数据库) - Basic Auth(基础认证) ## 环境 在项目根目录创建 `.env`(示例已提供)并设置: ``` DATABASE_URL="postgresql://user:pass@host:5432/dbname" PORT=3000 ``` ## 安装与数据库 ```bash bun install bun run prisma:generate bun run prisma:migrate -- --name init bun run db:seed ``` ## 运行 ```bash bun run dev # 或 bun run start ``` 访问 `GET /health` 检查存活。 ## 认证 所有需要认证的接口采用 Basic Auth。构造 `Authorization: Basic base64(username:password)`。 示例种子创建了用户:`admin/admin123`。 ## API 概览 用户 - POST `/api/users/register`,注册 { username, password } - GET `/api/users/me`,获取当前用户(需认证) - PUT `/api/users/me`,更新资料(可含 avatarBase64、avatarMime,需认证) - GET `/api/users/:id/avatar`,获取头像二进制 模型广场 - POST `/api/models`,创建模型(需认证) - PUT `/api/models/:id`,更新模型(需认证且需作者) - DELETE `/api/models/:id`,删除模型(需认证且需作者) - GET `/api/models/:id`,模型详情 - GET `/api/models`,列表,支持 query:q、authorId、page、pageSize、sort=new|old - GET `/api/models/:id/model.json`,下载模型 JSON - GET `/api/models/:id/preview`,获取预览图 字段说明 - 模型:title、authorId、desc(markdown)、model(JSON)、preview(二进制) - 用户:username、password(哈希)、avatar(二进制) ## 注意 - 不使用本地文件持久化,所有数据保存在 PostgreSQL。 - 预览图与头像以二进制保存在表中,并带 `*Mime` 字段标注类型。