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

创建新用户:

                                    
label :
  • Node.js
  • MySQL
© 蓝易云.