Node.js和MySQL编写接口并进行请求
一、安装Node.js:首先,确保你的计算机上已经安装了Node.js。你可以从Node.js官方网站(https://nodejs.org)下载并安装适合你操作系统的版本。
二、新建 server 文件夹作为项目根目录,并在项目根目录中运行如下的命令,初始化包管理配置文件:
npm init -y
三、安装必要的依赖
express
Express是一个简洁、灵活且易于使用的Web应用程序框架,非常适合构建各种规模的Web应用程序和API。(**注意:**在新版本的Express中,某些功能已经被弃用或更改。因此,建议查阅官方文档(https://expressjs.com/)以获取最新的使用方法和API参考。)
-
安装Express:在项目目录中运行以下命令,安装Express模块:
npm install express
-
引入Express模块:在你的Node.js代码中,引入Express模块:
const express = require('express');
-
创建Express应用程序:使用express()函数创建一个Express应用程序实例。以下是一个示例:
const app = express();
-
定义路由和处理函数:使用app.get()、app.post()等方法定义路由,并为每个路由指定相应的处理函数。以下是一个示例:
javascript
app.get('/', (req, res) => {
res.send('Hello, World!');
});
这个示例中的路由是根路径(/),当客户端发起GET请求时,将返回Hello, World!作为响应。
-
启动服务器:使用app.listen()方法来启动服务器并监听指定的端口。以下是一个示例:
app.listen(3000, () => {
console.log('服务器已启动,监听端口3000');
});
cors(https://www.npmjs.com/package/cors)
CORS(跨来源资源共享)是一种解决跨域访问的机制,允许在一个域中的Web应用程序向另一个域的服务器发送AJAX请求。
-
安装cors:在项目目录中运行以下命令,安装cors模块:
npm install cors
-
引入cors模块:在你的Node.js代码中,引入cors模块:
javascript
const cors = require('cors');
- 配置CORS中间件:在Express应用程序中,使用app.use()方法来配置cors中间件,以允许或限制特定来源的跨域访问。以下是一个示例:
javascript
app.use(cors());
这里使用了默认的cors配置,将允许所有来源的跨域请求。你也可以根据需要进行自定义配置,例如指定允许的来源、允许的HTTP方法等。
- 使用CORS:在路由处理函数中,你可以通过res.header()方法来设置CORS相关的响应头。以下是一个示例:
javascript
app.get('/data', (req, res) => {
res.header('Access-Control-Allow-Origin', 'http://example.com');
res.header('Access-Control-Allow-Methods', 'GET, POST');
res.header('Access-Control-Allow-Headers', 'Content-Type');
// 执行操作,例如返回数据给客户端
res.json({
message: '数据获取成功',
data: {
// 数据内容
}
});
});
body-parser(https://www.npmjs.com/package/body-parser)
body-parser是一个Node.js中间件,用于解析HTTP请求的请求体,以便从POST、PUT和PATCH等请求中获取请求参数。它将请求体解析为JavaScript对象,以便在处理程序中使用。
-
安装body-parser:在项目目录中运行以下命令,安装body-parser模块:
npm install body-parser
-
引入body-parser模块:在你的Node.js代码中,引入body-parser模块:
javascript
const bodyParser = require('body-parser');
- 配置body-parser中间件:在Express应用程序中,使用app.use()方法来配置body-parser中间件,以便在每个请求中都能够访问请求体的内容。以下是一个示例:
javascript
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
这里使用了两个body-parser的中间件:urlencoded和json。urlencoded用于解析application/x-www-form-urlencoded格式的请求体,而json用于解析application/json格式的请求体。
- 使用解析后的请求体:在路由处理函数中,你可以通过req.body来访问解析后的请求体数据。以下是一个示例:
javascript
app.post('/users', (req, res) => {
const { name, email } = req.body;
// 执行操作,例如将用户数据保存到数据库
res.json({
message: '用户创建成功',
user: {
name,
email
}
});
});
mysql
-
安装MySQL:首先,确保你的计算机上已经安装了MySQL数据库。你可以从MySQL官方网站(https://dev.mysql.com/downloads/installer/)下载并安装适合你操作系统的版本。也可以使用vscode依赖mysql
-
安装依赖
npm install mysql
-
创建数据库连接:在你的Node.js代码中,创建一个MySQL数据库连接,并配置连接参数。以下是一个简单的示例:
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'localhost',
user: 'your_username',
password: 'your_password',
database: 'your_database'
});connection.connect((err) => {
if (err) {
console.error('数据库连接失败:', err);
} else {
console.log('数据库连接成功');
}
}); -
创建API路由和处理函数:在你的Node.js代码中,创建Express应用程序,并定义API路由和相应的处理函数。以下是一个简单的示例:
const express = require('express');
const app = express();// 获取所有用户
app.get('/users', (req, res) => {
const query = 'SELECT * FROM users';connection.query(query, (err, results) => {
if (err) {
console.error('查询失败:', err);
res.status(500).json({
error: '服务器内部错误'
});
} else {
res.json(results);
}
});
});// 启动服务器
app.listen(3000, () => {
console.log('API服务器已启动,监听端口3000');
}); -
启动服务器并测试接口:在项目目录中运行以下命令,启动你的API服务器:
node index.js
-
使用API请求工具(例如Postman)或浏览器,访问http://localhost:3000/users,你应该能够看到返回的用户数据。
四、具体代码
js
const express = require('express')
const cors = require('cors')
const bodyParser = require('body-parser')
const app = express()
app.use(cors()) // 使用cors中间件
// 解析请求体,使我们能够访问POST请求的数据
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())
// 创建数据库链接
const connection = mysql.createConnection({
host: '127.0.0.1',
user: '用户名',
password: '密码',
database: '数据库名'
})
connection.connect()
function initDate () {
var dt = new Date()
var y = dt.getFullYear()
var mt = dt.getMonth() + 1
var day = dt.getDate()
var h = dt.getHours() //获取时
var m = dt.getMinutes() //获取分
var s = dt.getSeconds() //获取秒
if (mt < 10) {
mt = '0' + mt
}
if (day < 10) {
day = '0' + day
}
if (h < 10) {
h = '0' + h
}
if (m < 10) {
m = '0' + m
}
if (s < 10) {
s = '0' + s
}
return y + '-' + mt + '-' + day + ' ' + h + ':' + m + ':' + s
}
app.post('/submit', (req, res) => {
const data = req.body
const user_name = data.name
const email = data.email
const message = data.message
const create_time = initDate()
console.log(create_time, 'create_time')
connection.query(
`insert into message_log (create_time, user_name, email,remark) values ('${create_time}','${user_name}','${email}','${message}');`,
function (err, rows, fields) {
console.log(err, rows, fields)
if (err == null) {
res.json({
status: 200
})
} else {
res.json({
status: 500,
err, rows, fields
})
}
}
)
})
// 启动服务器
app.listen(3000, () => {
console.log('服务器已启动,监听端口3000')
})