Files
Nexus_Edu/backend

EduNexus Backend API

后端API服务基于Express + Prisma + MySQL。

快速开始

1. 安装依赖

cd backend
npm install

2. 配置环境变量

复制.env.example.env并配置数据库连接:

cp .env.example .env

编辑.env

DATABASE_URL="mysql://用户名:密码@localhost:3306/edunexus"

3. 初始化数据库

# 生成Prisma客户端
npm run prisma:generate

# 同步数据库schema
npm run prisma:push

4. (可选) 导入示例数据

在MySQL中执行

mysql -u root -p edunexus < ../database/seed.sql

5. 启动服务器

# 开发模式
npm run dev

# 生产模式
npm run build
npm start

服务器将在 http://localhost:3001 启动

API端点

Auth /api/auth

  • POST /register - 注册
  • POST /login - 登录
  • GET /profile - 获取个人信息 🔒
  • PUT /profile - 更新个人信息 🔒
  • POST /change-password - 修改密码 🔒

Exams /api/exams

  • GET / - 获取试卷列表 🔒
  • GET /:id - 获取试卷详情 🔒
  • POST / - 创建试卷 🔒
  • PUT /:id - 更新试卷 🔒
  • DELETE /:id - 删除试卷 🔒
  • POST /:id/nodes - 添加节点 🔒
  • PUT /:id/nodes/:nodeId - 更新节点 🔒
  • DELETE /:id/nodes/:nodeId - 删除节点 🔒

其他模块

  • /api/org - 组织架构 (TODO)
  • /api/curriculum - 教材知识 (TODO)
  • /api/questions - 题库 (TODO)
  • /api/assignments - 作业 (TODO)
  • /api/submissions - 提交 (TODO)
  • /api/grading - 批阅 (TODO)

🔒 = 需要JWT认证

认证

API使用JWT Bearer Token认证。

  1. 调用/api/auth/login获取token
  2. 在请求头中添加:Authorization: Bearer <token>

项目结构

backend/
├── src/
│   ├── controllers/     # 控制器
│   ├── routes/          # 路由
│   ├── middleware/      # 中间件
│   ├── utils/           # 工具函数
│   └── index.ts         # 入口文件
├── prisma/
│   └── schema.prisma    # Prisma模型定义
└── package.json

数据库

使用Prisma ORM管理MySQL数据库

# 查看数据库
npm run prisma:studio

# 创建迁移
npm run prisma:migrate

# 重置数据库
npm run prisma:push

开发指南

  • 所有API返回JSON格式
  • 使用UUID作为主键
  • 支持软删除 (isDeleted字段)
  • 所有表包含审计字段
  • ExamNode支持无限层级嵌套

待完成

  • 完善其他6个模块的API实现
  • 添加数据验证中间件
  • 实现文件上传功能
  • 添加单元测试
  • 添加API文档Swagger