Node.js写接口连接MySQL数据库教程
云计算
Node.js写接口连接MySQL数据库教程
2025-04-24 00:05
Node.js连接MySQL数据库开发RESTful API全指南 ? 本教程将详细介绍如何使用Node.js创建连接MySQL数据库的RESTful API接口,涵盖从环境搭建到安全部署的全流程。
Node.js连接MySQL数据库开发RESTful API全指南 🚀
本教程将详细介绍如何使用Node.js创建连接MySQL数据库的RESTful API接口,涵盖从环境搭建到安全部署的全流程。
一、环境准备与项目初始化 🔧
1. 安装Node.js环境
确保已安装Node.js 16+版本:
node -v
npm -v
2. 初始化项目
创建项目目录并初始化:
mkdir node-mysql-api && cd node-mysql-api
npm init -y
3. 安装MySQL数据库
Ubuntu/Debian系统安装:
sudo apt update
sudo apt install mysql-server
sudo mysql_secure_installation
二、核心依赖安装 📦
安装必要npm包:
npm install express mysql2 dotenv cors
npm install --save-dev nodemon
express
: Web框架mysql2
: MySQL客户端dotenv
: 环境变量管理cors
: 跨域支持nodemon
: 开发热重载
三、项目结构设计 🗂️
/node-mysql-api
├── .env # 环境变量
├── app.js # 应用入口
├── config/
│ └── db.js # 数据库配置
├── controllers/
│ └── userController.js # 业务逻辑
├── routes/
│ └── userRoutes.js # 路由定义
├── package.json
└── package-lock.json
四、数据库连接配置 🔗
1. 创建数据库配置文件
config/db.js
:
const mysql = require('mysql2/promise');
require('dotenv').config();
const pool = mysql.createPool({
host: process.env.DB_HOST,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
waitForConnections: true,
connectionLimit: 10,
queueLimit: 0
});
module.exports = pool;
2. 设置环境变量
.env
文件:
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=yourpassword
DB_NAME=node_api
PORT=3000
五、创建数据表 📊
执行SQL创建用户表:
CREATE DATABASE IF NOT EXISTS node_api;
USE node_api;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
六、实现RESTful API 🛠️
1. 用户控制器
controllers/userController.js
:
const pool = require('../config/db');
// 获取所有用户
exports.getAllUsers = async (req, res) => {
try {
const [rows] = await pool.query('SELECT * FROM users');
res.json(rows);
} catch (err) {
res.status(500).json({ error: err.message });
}
};
// 创建用户
exports.createUser = async (req, res) => {
const { name, email } = req.body;
try {
const [result] = await pool.query(
'INSERT INTO users (name, email) VALUES (?, ?)',
[name, email]
);
res.status(201).json({ id: result.insertId, name, email });
} catch (err) {
res.status(400).json({ error: err.message });
}
};
// 其他CRUD操作类似实现...
2. 定义路由
routes/userRoutes.js
:
const express = require('express');
const router = express.Router();
const userController = require('../controllers/userController');
router.get('/', userController.getAllUsers);
router.post('/', userController.createUser);
// 其他路由...
module.exports = router;
3. 应用入口文件
app.js
:
const express = require('express');
const cors = require('cors');
require('dotenv').config();
const app = express();
app.use(cors());
app.use(express.json());
// 路由
const userRoutes = require('./routes/userRoutes');
app.use('/api/users', userRoutes);
// 错误处理中间件
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).json({ error: '服务器内部错误' });
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`服务器运行在 http://localhost:${PORT}`);
});
七、API测试与验证 🔍
1. 启动开发服务器
nodemon app.js
2. 使用Postman测试API
获取所有用户:
GET http://localhost:3000/api/users
创建新用户:
标签:
- Node.js
- MySQL