Todo-NodeJS-API 项目教程
todo-nodejs-apiNodeJS全栈开发之后端接口技术栈基于Node.js+Express+Mysql实现RESTFUL API项目地址:https://gitcode.com/gh_mirrors/to/todo-nodejs-api
1. 项目的目录结构及介绍
todo-nodejs-api/
├── config/
│ ├── db.js
│ ├── jwt.js
│ └── server.js
├── controllers/
│ ├── authController.js
│ ├── todoController.js
│ └── userController.js
├── models/
│ ├── todoModel.js
│ └── userModel.js
├── routes/
│ ├── authRoutes.js
│ ├── todoRoutes.js
│ └── userRoutes.js
├── middleware/
│ ├── authMiddleware.js
│ └── errorMiddleware.js
├── tests/
│ ├── auth.test.js
│ ├── todo.test.js
│ └── user.test.js
├── .env
├── .gitignore
├── app.js
├── package.json
└── README.md
目录结构介绍
- config/: 包含项目的配置文件,如数据库配置、JWT配置和服务器配置。
- controllers/: 包含处理业务逻辑的控制器文件。
- models/: 包含数据库模型的定义文件。
- routes/: 包含路由定义文件。
- middleware/: 包含中间件文件,如身份验证和错误处理。
- tests/: 包含单元测试文件。
- .env: 环境变量配置文件。
- .gitignore: Git忽略文件配置。
- app.js: 项目的启动文件。
- package.json: 项目的依赖和脚本配置文件。
- README.md: 项目说明文档。
2. 项目的启动文件介绍
app.js
const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const dotenv = require('dotenv');
dotenv.config();
const app = express();
// 中间件
app.use(bodyParser.json());
// 路由
const authRoutes = require('./routes/authRoutes');
const todoRoutes = require('./routes/todoRoutes');
const userRoutes = require('./routes/userRoutes');
app.use('/api/auth', authRoutes);
app.use('/api/todos', todoRoutes);
app.use('/api/users', userRoutes);
// 数据库连接
mongoose.connect(process.env.MONGO_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
}).then(() => {
console.log('MongoDB connected');
}).catch(err => {
console.log(err);
});
// 启动服务器
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
启动文件介绍
- 引入依赖: 引入Express、Mongoose、Body-parser等依赖。
- 配置环境变量: 使用dotenv加载环境变量。
- 创建Express应用: 初始化Express应用。
- 使用中间件: 使用body-parser处理JSON请求体。
- 定义路由: 引入并使用路由文件。
- 连接数据库: 使用Mongoose连接MongoDB数据库。
- 启动服务器: 监听指定端口启动服务器。
3. 项目的配置文件介绍
config/db.js
const mongoose = require('mongoose');
const connectDB = async () => {
try {
await mongoose.connect(process.env.MONGO_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
console.log('MongoDB connected');
} catch (err) {
console.error(err.message);
process.exit(1);
}
};
module.exports = connectDB;
config/jwt.js
const jwt = require('jsonwebtoken');
const generateToken = (userId) => {
return jwt.sign({ id: userId }, process.env.JWT_SECRET, {
expiresIn: '1d',
});
};
module.exports = generateToken;
config/server.js
const express =
todo-nodejs-apiNodeJS全栈开发之后端接口技术栈基于Node.js+Express+Mysql实现RESTFUL API项目地址:https://gitcode.com/gh_mirrors/to/todo-nodejs-api