以下是一个简单的 Node.js 和 Express.js 结合 MySQL 数据库的示例,用于演示如何使用 Node.js 和 Express.js 在服务器端创建一个 REST API 接口。
以下操作需要确保你的电脑安装了: node
环境和mysql
环境
- 安装依赖模块
使用以下命令安装 express
、body-parser
和 mysql
模块:
win+R键盘打开终端
输入:
1、mkdir demo 新建demo文件夹
2、cd demo 进入demo文件夹的路径
//初始化项目,执行 npm init -y 命令后,npm 会自动创建一个 package.json 文件,其中包含一些默认配置,如项目名称、版本、作者等。开发者可以在之后根据实际情况修改这些配置信息,并在其中添加项目所需的依赖
3、npm init -y
// 安装node项目所需的依赖
4、npm install express body-parser mysql --save
- 创建 Express 应用程序
在根目录下创建一个名为 server.js
的文件,并编写如下代码:
const express = require('express');
const bodyParser = require('body-parser');
const mysql = require('mysql');
const app = express();
app.use(bodyParser.json());
const connection = mysql.createConnection({
host: 'localhost',
//数据库用户名
user: 'root',
//数据库密码
password: 'password',
//需要操作的数据库名字
database: 'my_db'
});
connection.connect(err => {
if (err) {
console.log('Error connecting to Database');
return;
}
console.log('Connected to Database');
});
// 允许跨域访问
app.use((req, res, next) => {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Headers', 'Content-Type,Content-Length, Authorization, Accept,X-Requested-With');
res.header('Access-Control-Allow-Methods', 'GET,POST,PUT,DELETE');
if (req.method == "OPTIONS") {
res.sendStatus(200);
} else {
next();
}
});
app.get('/api/users', (req, res) => {
const sql = 'SELECT * FROM user';
connection.query(sql, (err, results, fields) => {
if (err) {
console.log('Error while querying database');
return;
}
res.json(results);
});
});
app.post('/api/users', (req, res) => {
const user = req.body;
const sql = 'INSERT INTO user SET ?';
connection.query(sql, user, (err, results, fields) => {
if (err) {
console.log('Error while inserting data');
return;
}
res.json(results);
});
});
app.put('/api/users/:id', (req, res) => {
const id = req.params.id;
const user = req.body;
const sql = 'UPDATE user SET ? WHERE id = ?';
connection.query(sql, [user, id], (err, results, fields) => {
if (err) {
console.log('Error while updating data');
return;
}
res.json(results);
});
});
app.delete('/api/users/:id', (req, res) => {
const id = req.params.id;
const sql = 'DELETE FROM user WHERE id = ?';
connection.query(sql, id, (err, results, fields) => {
if (err) {
console.log('Error while deleting data');
return;
}
res.json(results);
});
});
app.listen(3000, () => {
console.log('Server started on port 3000');
});
以上代码中req和res的区别:
req对象
:
- 代表着来自客户端的请求信息,其中包括请求头,请求参数和请求体等信息;
- 可以被用于从HTTP请求中取出请求头、参数和体等数据;
-
req
对象是只读的,不应该手动修改它的属性; -
req
对象通常在回调函数中使用;
res对象
:
- 代表着要返回给客户端的响应信息,包括相应的状态码、响应头和响应体等信息;
- 可以使用它的方法将响应体/数据发送给客户端;
-
res
对象拥有一组状态码,用于响应请求结果,如200代表成功,404代表未找到等; -
res
对象同样是只读的;
以上代码创建了一个 Express 应用程序,并在 /api/users
路径下创建了 REST API 接口,包含获取所有用户、添加用户、修改用户和删除用户这四种操作。
- 运行应用程序
在终端中运行以下命令启动应用程序:
node server.js
- 访问应用程序
使用 HTTP 客户端(如 Postman)访问以下地址,测试接口是否正常:
- 获取所有用户:
http://localhost:3000/api/users
- 添加用户:
http://localhost:3000/api/users
,类型为 POST,请求体为 JSON 格式的用户信息 - 修改用户:
http://localhost:3000/api/users/{id}
,类型为 PUT,请求体为 JSON 格式的用户信息 - 删除用户:
http://localhost:3000/api/users/{id}
,类型为 DELETE
以上是一个简单的 Node.js 和 Express.js 结合 MySQL 数据库的使用示例。在实际开发中,可以根据需求对代码进行修改和扩展。