2025-08-30 14:33:49 +08:00
|
|
|
|
# 结伴客后端服务
|
|
|
|
|
|
|
|
|
|
|
|
基于 Node.js + Express + MongoDB 的后端 API 服务。
|
|
|
|
|
|
|
|
|
|
|
|
## 功能特性
|
|
|
|
|
|
|
|
|
|
|
|
- ✅ 用户认证系统(JWT)
|
|
|
|
|
|
- ✅ 微信登录集成
|
|
|
|
|
|
- ✅ RESTful API 设计
|
|
|
|
|
|
- ✅ 数据验证和清洗
|
|
|
|
|
|
- ✅ 错误处理中间件
|
|
|
|
|
|
- ✅ 请求频率限制
|
|
|
|
|
|
- ✅ 安全防护(CORS, Helmet, XSS防护)
|
|
|
|
|
|
- ✅ MongoDB 数据库集成
|
|
|
|
|
|
- ✅ 环境配置管理
|
|
|
|
|
|
|
|
|
|
|
|
## 快速开始
|
|
|
|
|
|
|
|
|
|
|
|
### 环境要求
|
|
|
|
|
|
|
|
|
|
|
|
- Node.js 16+
|
|
|
|
|
|
- MongoDB 4.4+
|
|
|
|
|
|
- npm 或 yarn
|
|
|
|
|
|
|
|
|
|
|
|
### 安装依赖
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
cd backend
|
|
|
|
|
|
npm install
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 环境配置
|
|
|
|
|
|
|
|
|
|
|
|
1. 复制环境变量文件:
|
|
|
|
|
|
```bash
|
|
|
|
|
|
cp .env.example .env
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
2. 编辑 `.env` 文件,配置你的环境变量:
|
|
|
|
|
|
```env
|
2025-09-01 03:32:45 +08:00
|
|
|
|
MONGODB_URI=mongodb://mongodb.jiebanke.com:27017/jiebanke
|
2025-08-30 14:33:49 +08:00
|
|
|
|
JWT_SECRET=your-super-secret-jwt-key
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 启动开发服务器
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 开发模式(带热重载)
|
|
|
|
|
|
npm run dev
|
|
|
|
|
|
|
|
|
|
|
|
# 生产模式
|
|
|
|
|
|
npm start
|
|
|
|
|
|
|
|
|
|
|
|
# 调试模式
|
|
|
|
|
|
npm run debug
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 测试
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 运行测试
|
|
|
|
|
|
npm test
|
|
|
|
|
|
|
|
|
|
|
|
# 运行测试并生成覆盖率报告
|
|
|
|
|
|
npm run test:coverage
|
|
|
|
|
|
|
|
|
|
|
|
# 运行端到端测试
|
|
|
|
|
|
npm run test:e2e
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## API 文档
|
|
|
|
|
|
|
|
|
|
|
|
### 认证接口
|
|
|
|
|
|
|
|
|
|
|
|
#### 用户注册
|
|
|
|
|
|
```
|
|
|
|
|
|
POST /api/v1/auth/register
|
|
|
|
|
|
Content-Type: application/json
|
|
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
"username": "testuser",
|
|
|
|
|
|
"password": "password123",
|
|
|
|
|
|
"nickname": "测试用户",
|
2025-09-01 03:32:45 +08:00
|
|
|
|
"email": "test@jiebanke.com",
|
2025-08-30 14:33:49 +08:00
|
|
|
|
"phone": "13800138000"
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 用户登录
|
|
|
|
|
|
```
|
|
|
|
|
|
POST /api/v1/auth/login
|
|
|
|
|
|
Content-Type: application/json
|
|
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
"username": "testuser",
|
|
|
|
|
|
"password": "password123"
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 获取当前用户信息
|
|
|
|
|
|
```
|
|
|
|
|
|
GET /api/v1/auth/me
|
|
|
|
|
|
Authorization: Bearer <token>
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 微信登录
|
|
|
|
|
|
```
|
|
|
|
|
|
POST /api/v1/auth/wechat-login
|
|
|
|
|
|
Content-Type: application/json
|
|
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
"code": "微信授权码",
|
|
|
|
|
|
"userInfo": {
|
|
|
|
|
|
"nickName": "微信用户",
|
|
|
|
|
|
"avatarUrl": "https://...",
|
|
|
|
|
|
"gender": 1
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 项目结构
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
backend/
|
|
|
|
|
|
├── src/
|
|
|
|
|
|
│ ├── controllers/ # 控制器层
|
|
|
|
|
|
│ ├── models/ # 数据模型
|
|
|
|
|
|
│ ├── routes/ # 路由定义
|
|
|
|
|
|
│ ├── middleware/ # 中间件
|
|
|
|
|
|
│ ├── utils/ # 工具函数
|
|
|
|
|
|
│ ├── app.js # Express应用配置
|
|
|
|
|
|
│ └── server.js # 服务器入口
|
|
|
|
|
|
├── tests/ # 测试文件
|
|
|
|
|
|
├── .env.example # 环境变量示例
|
|
|
|
|
|
├── package.json
|
|
|
|
|
|
└── README.md
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 数据库设计
|
|
|
|
|
|
|
|
|
|
|
|
### 用户表 (users)
|
|
|
|
|
|
- 用户基本信息
|
|
|
|
|
|
- 认证信息
|
|
|
|
|
|
- 统计信息
|
|
|
|
|
|
- 第三方登录信息
|
|
|
|
|
|
|
|
|
|
|
|
## 开发指南
|
|
|
|
|
|
|
|
|
|
|
|
### 添加新功能
|
|
|
|
|
|
|
|
|
|
|
|
1. 创建数据模型 (`src/models/`)
|
|
|
|
|
|
2. 创建控制器 (`src/controllers/`)
|
|
|
|
|
|
3. 创建路由 (`src/routes/`)
|
|
|
|
|
|
4. 在 `app.js` 中注册路由
|
|
|
|
|
|
|
|
|
|
|
|
### 代码规范
|
|
|
|
|
|
|
|
|
|
|
|
- 使用 ESLint 进行代码检查
|
|
|
|
|
|
- 遵循 JavaScript Standard Style
|
|
|
|
|
|
- 使用 async/await 处理异步操作
|
|
|
|
|
|
- 使用错误处理中间件
|
|
|
|
|
|
|
|
|
|
|
|
## 部署
|
|
|
|
|
|
|
|
|
|
|
|
### Docker 部署
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 构建镜像
|
|
|
|
|
|
docker build -t jiebanke-backend .
|
|
|
|
|
|
|
|
|
|
|
|
# 运行容器
|
|
|
|
|
|
docker run -p 3000:3000 --env-file .env jiebanke-backend
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### PM2 部署
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
npm install -g pm2
|
|
|
|
|
|
pm2 start ecosystem.config.js
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 故障排除
|
|
|
|
|
|
|
|
|
|
|
|
### 常见问题
|
|
|
|
|
|
|
|
|
|
|
|
1. **MongoDB 连接失败**
|
|
|
|
|
|
- 检查 MongoDB 服务是否运行
|
|
|
|
|
|
- 检查连接字符串是否正确
|
|
|
|
|
|
|
|
|
|
|
|
2. **JWT 验证失败**
|
|
|
|
|
|
- 检查 JWT_SECRET 环境变量
|
|
|
|
|
|
|
|
|
|
|
|
3. **CORS 错误**
|
|
|
|
|
|
- 检查前端域名是否在 CORS 白名单中
|
|
|
|
|
|
|
|
|
|
|
|
## 技术支持
|
|
|
|
|
|
|
|
|
|
|
|
如有问题,请查看日志文件或联系开发团队。
|
|
|
|
|
|
|
|
|
|
|
|
## 许可证
|
|
|
|
|
|
|
|
|
|
|
|
MIT License
|