1.案例需求
基于MySQL数据库+ Express对外提供用户列表的API接口服务。用到的技术点如下:
第三方包express和mysql2
ES6模块化
promise
async/await
2.主要的实现步骤
搭建项目的基本结构
创建基本的服务器
创建db数据库操作模块
创建user_ctrl 业务模块
创建user_router路由模块
3.搭建项目的基本结构
启用ES6模块化支持
在package.json中声明**“type” : “module”**
安装第三方依赖包
运行npm install express@4.17.1 mysql2@2.2.5
4.创建基本的服务器
import express from 'express'
const app = express()
app.listen(8088, () => {
console.log('server running at http://localhost:8088')
})
这里由于我的80端口被占用了,所以我才用的是8088,你们可以采用80,地址就可以是http://127.0.0.1
5.创建db数据库操作模块
import mysql from 'mysql2'
const pool = mysql.createPool({
host: '127.0.0.1',
port: 3306,
database: 'crm', //请填写要操作的数据库名称
user: 'root', //请填写登录数据库的用户名
password: '123456' //请填写登录数据库的密码
})
//默认导出一个支持Promise API 的 pool
export default pool.promise()
6.创建user_ctrl模块
import db from '../db/index.js'
//使用 ES6 的按需导出语法,将 getAllUser 方法导出出去
//获取所有用户的列表数据
export async function getAllUser(req, res) {
// const [rows] = await db.query('select id, user_name, true_name from t_user')
// console.log(rows);
try {
const [rows] = await db.query('select id, user_name, true_name from t_user')
res.send({
//发送给客户端
status: 0, //0表示成功
message: '获取用户列表数据成功!',
data: rows
})
} catch (err) {
res.send({
status: 1, //1表示失败
message: '获取用户列表数据失败!',
desc: err.message
})
}
}
// getAllUser()
7.创建user_router模块
import express from 'express'
// 从 user_ctrl.js模块中按需导入 getAl1User函数
import { getAllUser } from '../controller/user_ctrl.js'
//创建路由对象
const router = new express.Router()
//挂载路由规则
router.get('/user', getAllUser)
//使用 ES6 的默认导出语法,将路由对象共享出去
export default router