- 使用pm2运行:
pm2 start npm --name api_YKWX -- start prd
- 使用npm原生运行:
npm start
- 使用pm2运行app.js(不推荐):
npm run prd
;
在开始编码之前,先明确需求:
- 核心功能:用户登录、文件上传、模型计算、状态查询。
- 技术栈:后端使用Node.js和Express框架,MongoDB作为数据库,前端可选Vue或React。
- 安全性:用户认证使用OAuth2.0,文件上传支持阿里云OSS。
- 安装Node.js和MongoDB,并确认环境配置正确。
- 配置开发所需的依赖库,如Express、mongoose、jsonwebtoken等。
- 使用
npm init
初始化Node.js项目。 - 安装所需依赖库。
- 创建必要的文件和文件夹结构,例如
controllers
(控制器)、models
(模型)、routes
(路由)、config
(配置)等目录。
- 在MongoDB中创建一个名为项目名称的数据库。
- 根据接口文档中的ER图,定义
users
、tasks
、uploadProgress
、modelFiles
等集合及字段。 - 在项目中创建
models
目录,并定义这些集合的Mongoose Schema,以便与MongoDB集合对接。
- 使用Express框架创建服务。
- 在
app.js
文件中加载并配置中间件,如body-parser
解析JSON请求,dotenv
管理环境变量,cors
设置跨域等。
-
用户注册(可选):
- 实现一个
POST /api/register
接口,处理用户注册请求,保存用户信息到users
集合。
- 实现一个
-
用户登录:
- 使用OAuth2.0的
password
模式,验证用户并返回JWT令牌。 - 确保密码存储使用加密(如
bcrypt
),实现密码验证及JWT生成逻辑。
- 使用OAuth2.0的
-
文件上传接口:
- 创建一个
POST /api/upload
接口,接收用户文件、文件名和其他必要参数。 - 配置文件上传的存储位置,使用阿里云OSS或其他云存储服务。
- 返回上传结果及文件的URL。
- 创建一个
-
任务管理接口:
- 创建任务记录到
tasks
集合,记录文件状态和存储位置(URL)。 - 实现接口获取当前任务状态和进度。
- 创建任务记录到
-
上传进度更新接口:
- 在文件上传时,实时更新
uploadProgress
集合中的进度百分比和状态。 - 实现接口查询特定任务的上传进度。
- 在文件上传时,实时更新
-
任务状态更新:
- 根据业务逻辑更新
tasks
集合中的任务状态。 - 提供接口获取指定任务的状态,用于前端的轮询更新。
- 根据业务逻辑更新
- 处理任务完成后的模型文件生成,将文件保存到
modelFiles
集合。 - 实现接口提供模型文件的下载URL或将文件直接返回前端。
- 实现登录界面、文件上传界面及任务管理页面。
- 登录界面集成OAuth2.0认证,并存储JWT以保持用户登录状态。
- 文件上传页面实现文件选择及进度展示,显示任务的实时状态。
- 实现定时轮询请求任务状态更新,并动态刷新前端进度显示。
- 在任务完成后,提供模型文件下载链接或下载按钮。
- 前端集成模型文件下载API,提供模型文件的下载服务。
- 使用Postman等工具测试各个API接口的正确性,确保请求与响应符合设计要求。
- 尤其关注文件上传、任务状态查询和下载功能的接口。
- 测试登录、文件上传、任务管理及模型文件下载的实际功能。
- 确保前端界面能正确显示任务进度,且在状态更新后自动刷新。
- 将前后端整合,模拟实际用户操作,验证整个流程的完整性与稳定性。
- 配置服务器环境,确保Node.js、MongoDB和前端框架运行环境已经搭建完成。
- 将后端代码上传到服务器并运行。
- 配置反向代理(如Nginx)处理前端请求转发,确保API服务可用。
- 构建前端项目,将构建文件部署到Web服务器上。
- 进行基础测试,确认项目运行正常。
- 性能优化:对于频繁请求的接口,考虑使用缓存机制减少数据库负载。
- 日志与监控:添加日志记录,并设置监控警报系统,确保问题能够及时发现和处理。
- 用户反馈:根据用户反馈不断改进项目功能,优化用户体验。
- 撰写完整的项目文档,包括功能说明、使用指南和开发注意事项。
- 项目总结,记录项目中的难点、解决方案及项目优化建议,以便后续版本迭代。
通过以上步骤,您可以逐步完成项目的开发。根据需求调整细节,确保项目在每个阶段都符合设计要求。