66 lines
1.9 KiB
Markdown
66 lines
1.9 KiB
Markdown
# 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` 字段标注类型。
|