# StarAppServer **Repository Path**: WenRou0728/app-server ## Basic Information - **Project Name**: StarAppServer - **Description**: 基于 Nodejs 开发的 starApp 的服务器 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-04-24 - **Last Updated**: 2026-02-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Star App 后端服务 基于 Node.js + Express 构建的后端 API 服务,为 Star App 提供完整的用户认证和动态内容管理功能。 ## 🚀 快速开始 ### 环境要求 - Node.js >= 14.x - MySQL 数据库 - Redis 缓存服务(可选,用于会话管理) ### 安装依赖 ```bash npm install ``` ### 环境配置 #### 1. 配置环境变量 项目使用单一 `.env` 配置文件: ```bash # 复制示例配置文件 cp .env .env.backup # 备份当前配置(可选) ``` #### 2. 修改配置文件 编辑 `.env` 文件,填入实际的配置信息 ## 🏗️ 项目架构 ### 环境变量管理 ``` 配置文件: └── .env # 统一配置文件(已纳入版本控制) 运行时特性: ├── 支持配置热更新(通过 /admin/config API) ├── 敏感信息保护 ├── 配置验证机制 └── 运行时配置管理 ``` ### 服务架构 ``` 主应用服务器 (端口 3000) ├── WebSocket 实时通信服务(端口 3002) ├── 用户认证与管理系统 ├── 动态内容发布与管理 ├── 文件上传与存储服务 ├── 数据库连接池管理 └── Redis 缓存服务集成 存储方案: ├── GitHub + jsDelivr CDN(推荐) │ ├── GitHub 仓库存储文件 │ └── jsDelivr 提供全球 CDN 访问 └── 本地文件系统(备用) └── 服务器本地文件存储(uploads/目录) ``` ### 目录结构 ``` app-server/ ├── config/ # 配置文件 │ ├── getConnection.js # 数据库连接池 │ └── sqlConfig.js # SQL 配置 ├── database/ # 数据库相关 │ └── init.sql # 数据库初始化脚本 ├── middleware/ # 中间件 │ └── tokenMiddleWare.js # JWT Token 验证中间件 ├── public/ # 静态资源文件 ├── router/ # 路由控制器 │ ├── configRouter.js # 配置管理路由 │ ├── userRouter.js # 用户相关路由 │ └── trendsRouter.js # 动态相关路由 ├── services/ # 业务服务层 │ ├── configService.js # 配置服务 │ ├── githubFileService.js # GitHub 文件服务 │ ├── ioredisService.js # Redis 服务 │ └── trendService.js # 动态业务服务 ├── utils/ # 工具函数 │ ├── fileToBase64.js # 文件转 Base64 │ ├── redisClient.js # Redis 客户端 │ └── websocketClient.js # WebSocket 客户端 ├── uploads/ # 本地文件存储目录 ├── .env # 环境配置文件 ├── index.js # 应用入口文件 └── package.json # 项目配置文件 ``` ## 📡 API 接口文档 ### 基础配置 - **基础URL**: `http://localhost:3000` - **认证方式**: JWT Token(通过 Authorization Header 传递) - **Content-Type**: `application/json` 或 `multipart/form-data` ### 用户认证接口 #### 获取验证码 ```http GET /users/captcha ``` 响应: SVG 格式的验证码图片(Base64编码) #### 用户注册 ```http POST /users/register Content-Type: application/json { "phone": "13800138000", // 手机号注册 "email": "user@example.com", // 邮箱注册(二选一) "password": "password123", "code": "abcd", // 验证码 "isPhone": true // true表示手机号注册,false表示邮箱注册 } ``` #### 用户登录 ```http POST /users/login Content-Type: application/json { "phone": "13800138000", // 手机号登录 "email": "user@example.com", // 邮箱登录(二选一) "password": "password123", "code": "abcd", // 验证码 "isPhone": true // true表示手机号登录,false表示邮箱登录 } ``` #### 用户退出登录 ```http POST /users/logout Authorization: Bearer {token} Content-Type: application/json { "phone": "13800138000", // 手机号 "email": "user@example.com" // 邮箱(二选一) } ``` #### 修改密码 ```http POST /users/fixPassword Content-Type: application/json { "phone": "13800138000", // 手机号 "email": "user@example.com", // 邮箱(二选一) "password": "oldPassword", "newPassword": "newPassword" } ``` #### 上传用户头像 ```http POST /users/upload Authorization: Bearer {token} Content-Type: multipart/form-data Form Fields: - file: 图片文件(支持 jpg/jpeg/png/gif/webp,最大5MB) - isPhone: "true" 或 "false" - userId: 用户ID ``` #### 修改用户信息 ```http POST /users/fixUserInformation Authorization: Bearer {token} Content-Type: application/json { "sex": 1, // 0-未知,1-男,2-女 "userName": "用户名", "sign": "个性签名", "isPhone": true, "userId": "用户ID", "birthday": "1990-01-01" } ``` #### 获取用户信息 ```http POST /users/getUserInfo Authorization: Bearer {token} Content-Type: application/json { "isPhone": true, "userId": "用户ID" } ``` #### 获取用户信息(GET方式) ```http GET /users/{userId}?isPhone=true Authorization: Bearer {token} ``` ### 动态内容接口 #### 获取动态列表 ```http GET /trends/list?page=1&pageSize=10 Authorization: Bearer {token} ``` #### 发布动态 ```http POST /trends/add Authorization: Bearer {token} Content-Type: multipart/form-data Form Fields: - text: 动态文字内容(必填) - file: 图片文件(可选,支持 jpg/jpeg/png/gif/webp,最大10MB) - userId: 用户ID - id: 动态唯一ID - isPhone: "true" 或 "false" ``` #### 点赞/取消点赞 ```http POST /trends/like Authorization: Bearer {token} Content-Type: application/json { "id": "动态ID", "userId": "用户ID", "page": 1, "pageSize": 10 } ``` #### 发表评论 ```http POST /trends/comment Authorization: Bearer {token} Content-Type: application/json { "id": "动态ID", "comment": "评论内容", "page": 1, "pageSize": 10, "userId": "用户ID", "isPhone": "true" } ``` ## ⚙️ 运行时配置管理API ### 配置查看 ```http GET /admin/config Authorization: Bearer {admin_token} ``` ### 配置更新 ```http POST /admin/config/update Authorization: Bearer {admin_token} Content-Type: application/json { "key": "DB_HOST", "value": "new-database-host.com" } ``` ### 重新加载配置 ```http POST /admin/config/reload Authorization: Bearer {admin_token} ``` ### 配置验证 ```http GET /admin/config/validate Authorization: Bearer {admin_token} ``` ## 🔧 环境变量配置说明 ### 环境配置 ```bash # 应用环境 NODE_ENV=development|production # 应用端口 PORT=3000 ``` ### 安全配置 ```bash # JWT 密钥(生产环境必须修改) JWT_SECRET=your-strong-jwt-secret-key TOKEN_EXPIRE_TIME=1d|7d|30d ``` ### 数据库配置 ```bash # MySQL 配置 DB_HOST=localhost DB_USER=your_db_username DB_PASSWORD=your_db_password DB_NAME=star DB_PORT=3306 DB_CONNECTION_LIMIT=10 ``` ### 缓存配置 ```bash # Redis 配置(可选) REDIS_HOST=localhost REDIS_PORT=6379 REDIS_PASSWORD=your_redis_password REDIS_DB=0 ``` ### 存储配置 ```bash # GitHub 存储配置 GITHUB_OWNER=your-github-username GITHUB_REPO=your-repository-name GITHUB_TOKEN=your-github-token GITHUB_BRANCH=main ``` ## 🛠️ 开发工具 ### 配置管理 - `npm run check-config` - 验证配置完整性 - 运行时API管理 - 动态更新配置 ### 代码质量 - ESLint - 代码规范检查 - Prettier - 代码格式化 ### 调试工具 - nodemon - 开发热重载 - console.log - 调试日志输出 ## 📚 相关文档 - [数据库设计说明](./database/README.md) - [GitHub 存储配置指南](./docs/GITHUB_STORAGE_GUIDE.md) ## 🤝 贡献指南 1. Fork 项目 2. 创建功能分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 开启 Pull Request ## 📄 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解更多详情