- 搭建 Node.js + Express 项目
- 理解路由、中间件、Controller、Service 分层
- 处理请求参数、响应 JSON 和错误
- 配置 CORS,完成前后端本地联调
- 使用 dotenv 管理环境变量
- 使用 Zod、Joi 或 class-validator 做请求参数校验
- 理解日志、requestId、统一异常和异步错误处理
- 了解 Prisma 的 schema、migration 和 client
- 编写基础单元测试或接口测试
- 初步了解 NestJS 的 Module、Controller、Provider
- 理解 npm scripts、dev、build、start、lint、test 的职责
项目
任务清单 API
实现任务新增、列表、详情、更新状态、删除接口,使用数据库保存数据。
产出物一个能被前端调用的 Todo API 项目。
AI 协作
让 AI 新增一个接口
在已有 Express 项目里新增“获取任务统计”的接口,要求 AI 说明需要修改哪些文件。
产出物一个新增接口和对应测试请求。
API
参数校验和接口测试
为新增任务接口添加请求体校验,并为成功、参数错误、资源不存在各写一个测试或 curl 示例。
产出物一组可验证接口行为的测试用例或请求集合。
排错
增加请求日志
为 Express 服务增加请求日志和 requestId,确保报错时可以定位一次请求。
产出物日志中能看到 method、url、status、duration、requestId。
Day 1
Express 最小服务
用最少代码跑通 Node 后端服务,理解路由、中间件和启动端口。
- 初始化 package.json 并安装 express、cors、dotenv
- 实现 GET /health 和 GET /api/tasks
- 配置 nodemon 或 node --watch 开发启动命令
- 用 curl 和浏览器验证服务可访问
当天产出一个可启动的 Express 最小项目。
Day 2
分层结构与统一响应
把路由、控制器、服务和错误处理拆开,避免所有逻辑堆在 app.js。
- 创建 routes、controllers、services、middlewares、utils 目录
- 实现任务列表、新增、详情接口
- 封装 success 和 error 响应格式
- 添加全局错误处理中间件
当天产出一个具备基础分层和统一响应的任务 API。
Day 3
参数校验与前后端联调
让后端在入口处拒绝错误数据,并返回前端能展示的错误信息。
- 使用 Zod 或 Joi 校验创建任务请求体
- 处理 query 分页参数和非法参数
- 配置 CORS 允许本地前端访问
- 写一个简单前端页面调用任务列表和新增接口
当天产出一个能和前端页面联调的任务 API。
Day 4
Prisma 与数据库持久化
把内存数据换成数据库,理解 schema、migration 和 client 的关系。
- 配置 DATABASE_URL 并初始化 Prisma
- 定义 Task 模型并执行 migration
- 用 Prisma Client 改写任务 CRUD
- 观察数据库字段和接口响应之间的映射
当天产出任务数据可以保存到 MySQL、PostgreSQL 或 SQLite。
Day 5
日志、测试和 NestJS 认知
补齐真实开发里会反复遇到的工程能力,并知道何时考虑 NestJS。
- 为每个请求记录 method、url、status、duration、requestId
- 用 Vitest、Jest 或 Supertest 写 2-3 个接口测试
- 让 AI Review Express 项目的分层和错误处理
- 阅读 NestJS Module、Controller、Provider 与 Express 分层的对应关系
当天产出一份 Express 项目工程质量检查清单。
Node.js 是前端转后端最快的主线。Express 更适合理解本质,NestJS 更接近企业级结构。
Express 路由
根据请求路径和方法,把请求分发到对应处理函数。
前端类比:类似 Vue Router 或 React Router,只是匹配的是接口路径。
中间件
在请求进入具体接口前处理通用逻辑,比如跨域、日志、鉴权、错误处理。
前端类比:类似 axios 拦截器和路由守卫。
Prisma
用类型化方式操作数据库,减少手写 SQL 的重复代码。
前端类比:类似把数据库操作封装成类型安全的 api client。
参数校验
在 Controller 或中间件层验证请求数据,避免错误数据进入业务逻辑和数据库。
前端类比:类似表单提交前的规则校验,但后端必须再次校验。
统一异常处理
集中处理业务错误和系统错误,保证前端收到稳定的错误响应。
前端类比:类似 axios response interceptor 统一处理错误。
接口测试
用自动化方式请求接口并断言状态码和响应内容,防止改代码后破坏已有行为。
前端类比:类似前端组件测试或 E2E 测试,只是目标是 API。
常见坑点- 不要把所有逻辑都写在路由文件里
- 不要把数据库密码写死在代码里
- 不要忽略 async/await 错误处理
- CORS 只解决浏览器跨域,不解决服务本身不可访问
- 前端做了校验不代表后端可以不校验
- Prisma migration 影响数据库结构,执行前要确认目标环境
- 不要用 console.log 代替结构化日志和错误上下文
生成 Express 项目
请使用 Node.js + Express + Prisma + MySQL 写一个任务清单后端 API。要求使用 routes、controllers、services、prisma 分层,支持任务新增、列表、详情、更新、删除,使用统一响应格式和统一错误处理中间件,使用 .env 管理数据库连接。请给出项目目录结构、安装命令、启动命令和接口测试示例。我是前端开发,请解释每个目录的职责。
新增接口前先给方案
我要在现有 Express 项目中新增【功能名称】接口。请先输出实现方案,不要直接写代码。请说明要新增或修改哪些文件、接口路径、请求参数、响应格式、数据库是否需要变更、可能的错误情况。
Express 工程质量 Review
请 Review 下面的 Express 项目结构和关键代码。请重点检查路由是否过厚、Service 是否清晰、参数校验是否完整、异步错误是否会漏掉、日志是否足够排查问题、Prisma 使用是否有潜在 N+1 或事务问题、接口测试是否覆盖核心场景。
- 能启动 Express 服务并访问接口
- 能知道 routes、controllers、services 分别放什么
- 能让前端页面请求本地后端
- 能添加参数校验、统一错误处理和基础日志
- 能使用 Prisma 完成最小 CRUD
- 能要求 AI 按现有项目结构新增接口