目标:
基于nodejs 用express + mysql 包 写接口,并利用路由中间件对代码进行优化,实现学生数据添加。
接口1
添加学生数据
url: localhost:3000/api/student
method: post
参数格式:普通键值对
name: 字符串
age: 数值
测试:postman来测试
接口2
获取所有的学生数据
url: localhost:3000/api/student
method: get
参数:无
测试:postman来测试
实现步骤
1. 新建一个项目文件夹,进行项目初始化
终端窗口输入命令: npm init --yes
初始化完成会在项目文件夹下生成会生成package.json文件
2. 下载安装express 和 mysql
终端窗口输入命令: npm i express mysql
安装完成,会在项目文件夹下生成node_modules文件夹和package-lock.json文件,
3. 创建文件目录结构
3.1 utills文件夹,并在其下面创建sql.js文件用来模块化mysql
3.2 在项目根目录下创建路由文件夹router,用来存放路由文件get.js和post.js
3.3 在项目根目录中创建server.js用来合并路由文件,对代码进行优化.
最终生成文件夹目录为:
4. 操作sql.js,模块化mysql
// 1. 加载mysql
const mysql = require('mysql');
// 2. 创建连接对象
const connection = mysql.createConnection({
// 对象的属性名字不能改变
host: 'localhost',
port: 3306,
user: 'root',
password: 'root',
database: 'lqq'
});
// 3. 连接到MySQL服务器
connection.connect((err) => {
// 如果有错误对象,表示连接失败
if (err) return console.log('数据库连接失败')
// 没有错误对象提示连接成功
console.log('mysql数据库连接成功')
});
// 导出
module.exports = connection
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
5. 编写路由接口
5.1 添加学生信息接口post.js
// 引入并调用express
const express = require('express')
// 导入sql.js
const connection = require('../../utils/sql')
// 普通键值对参数设置
const router = express.Router()
router.use(express.urlencoded())
// 添加人员信息
router.post('/student',(req,res)=>{
// 获取请求参数,并解构
const {name,age} = req.body
// 操作数据库
const sql = `insert into my(name,age) values('${name}',${age})`
connection.query(sql,(err,data)=>{
if(err){
res.json({msg:'添加失败',code:0})
}else {
res.json({msg:'添加成功',code:1})
}
})
})
// 导出
module.exports = router
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
5.2 获取所有学生信息接口 get.js
// 引入并调用express
const express = require('express')
// 导入sql.js
const connection = require('../../utils/sql')
// 普通键值对参数设置
const router = express.Router()
// 获取所有人员信息
router.get('/student',(req,res)=>{
// 操作数据库添加信息
const sql = `select * from my`
connection.query(sql, (err, data)=>{
if(err){
res.json({msg:'获取失败',code:0})
}else {
res.json({msg:'获取成功',code:1,data:data})
}
})
})
// 导出
module.exports = router
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
6. 路由中间件合并代码 server.js
const express = require('express')
const app = express()
// 导入router中的中间件
const getRouter = require('./router/api/get')
const postRouter = require('./router/api/post')
// 使用中间件
app.use('/api',getRouter)
app.use('/api',postRouter)
// 启动服务器
app.listen(3000,()=>{
console.log('3000已启动');
})
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
7. 终端命令窗口启动服务器,并开启MySQL,连接数据库
8. 打开postman测试接口,并检查数据库更新情况
8.1 postman测试结果
8.2 数据库更新结果