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
安装与数据库
bun install
bun run prisma:generate
bun run prisma:migrate -- --name init
bun run db:seed
运行
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字段标注类型。
Description
Languages
TypeScript
100%