# MyBlog **Repository Path**: tmkbk/my-blog ## Basic Information - **Project Name**: MyBlog - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-11-02 - **Last Updated**: 2025-06-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 个人博客后端系统 基于 Node.js + Express + TypeScript + MongoDB 构建的现代化博客后端系统。 ## 🚀 功能特性 - **用户管理**: 注册、登录、权限控制 - **文章管理**: 发布、编辑、分类、标签、归档 - **评论系统**: 文章评论功能 - **文件上传**: 图片上传和管理 - **安全防护**: JWT认证、参数验证、错误处理 - **性能优化**: 数据库连接池、索引优化 ## 📁 项目结构 ``` src/ ├── config/ # 配置文件 ├── constants/ # 常量定义 ├── controllers/ # 控制器层 ├── middleware/ # 中间件 ├── models/ # 数据模型 ├── routes/ # 路由定义 ├── service/ # 服务层 ├── schema/ # 数据验证模式 ├── types/ # TypeScript类型定义 ├── utils/ # 工具函数 └── app.ts # 应用入口 ``` ## 🔧 环境配置 ### 1. 安装依赖 ```bash npm install ``` ### 2. 环境变量配置 复制 `env.example` 为 `.env` 并配置: ```bash # 服务器配置 NODE_ENV=development PORT=8080 # 数据库配置 DB_URL=mongodb://localhost:27017 DB_USER=root DB_PASSWORD=123456 DB_AUTH_SOURCE=myBlog # JWT配置 JWT_SECRET_KEY=your-super-secret-jwt-key-here-make-it-long-and-random JWT_EXPIRES_IN=7d # 跨域配置 CORS_ORIGIN=http://localhost:5173 ``` ### 3. 启动开发服务器 ```bash npm run dev ``` ## 🔒 安全性特性 - **环境变量管理**: 敏感信息通过环境变量配置 - **JWT认证**: 安全的用户身份验证 - **参数验证**: 使用Zod进行严格的数据验证 - **错误处理**: 全局错误处理中间件 - **安全头**: XSS、CSRF等安全防护 - **文件上传限制**: 文件类型和大小限制 ## ⚡ 性能优化 - **数据库连接池**: 优化数据库连接性能 - **索引优化**: 为常用查询字段创建索引 - **错误日志**: 详细的错误记录和监控 - **静态文件服务**: 高效的文件服务 ## 📝 API文档 ### 用户相关 - `POST /user/create` - 用户注册 - `POST /user/login` - 用户登录 - `POST /user/logout` - 用户登出 - `GET /user/getUserInfo` - 获取用户信息 ### 文章相关 - `POST /article/create` - 创建文章 - `GET /article/list` - 获取文章列表 - `GET /article/detail/:id` - 获取文章详情 - `PUT /article/update` - 更新文章 - `DELETE /article/delete` - 删除文章 ### 文件上传 - `POST /file/uploadImage` - 上传图片 - `GET /file/getImage` - 获取图片信息 ## 🛠️ 开发指南 ### 添加新的API 1. 在 `models/` 中定义数据模型 2. 在 `schema/` 中定义验证规则 3. 在 `service/` 中实现业务逻辑 4. 在 `controllers/` 中处理请求响应 5. 在 `routes/` 中定义路由 ### 错误处理 使用自定义错误类进行错误处理: ```typescript import { ValidationError, NotFoundError } from '@types/error'; throw new ValidationError('数据验证失败'); throw new NotFoundError('资源不存在'); ``` ## 📊 监控和日志 - 使用Pino进行高性能日志记录 - 错误日志自动记录到文件 - 数据库连接状态监控 - 请求响应时间记录 ## 🔄 部署 ### 生产环境配置 1. 设置 `NODE_ENV=production` 2. 配置强密码的JWT密钥 3. 设置数据库连接 4. 配置日志级别 ### Docker部署(可选) ```dockerfile FROM node:18-alpine WORKDIR /app COPY package*.json ./ RUN npm ci --only=production COPY . . EXPOSE 8080 CMD ["npm", "start"] ``` ## 🤝 贡献 欢迎提交Issue和Pull Request来改进这个项目。 ## 📄 许可证 MIT License