- 基于 MySQL 数据库 + Express 对外提供用户列表的 API 接口服务
- 搭建项目的基本结构
- 创建基本的服务器
- 创建 db 数据库操作模块
- 创建 user_ctrl 业务模块
-
搭建项目的基本结构
启用 ES6 模块化支持
- 在 package.json 中声明 “type”: “module”
- 安装第三方依赖包
app.listen(8080, () => { console.log(‘server running at http://127.0.0.1‘) })
<a name="nuUH8"></a>
# 创建 db 数据库操作模块 --- db/index.js
```javascript
import mysql from 'mysql2'
const pool = mysql.createPool({
host: '127.0.0.1',
port: 8080,
database: 'my_db_01', // 数据库名称
user: 'root', // 数据库用户名
password: 'admin123' // 数据库密码
})
export default pool.promise()
创建 user_ctrl 模块 —- controller/user_ctrl.js
import db from '../db/index.js'
// 使用 ES6 的按需导出语法,将 getAllUser 方法导出出去
export async function getAllUser(req, res) {
const [rows] = await db.query('select id, username, nickname from ev_users')
res.send({
status: 0,
message: '获取用户列表数据成功',
data: rows
})
}
创建 user_router 模块 —- router/user_router.js
import express from 'express'
// 从 user_ctrl.js 模块中按需导入 getAllUser 函数
import { getAllUser } from '../controller/user_ctrl.js'
// 创建路由对象
const router = new express.Router()
// 挂载路由规则
router.get('/user', getAllUser)
// 使用 ES6 的默认导出语法,将路由对象共享出去
export default router
使用 try…catch 捕获异常 —- controller/user_ctrl.js
import db from '../db/index.js'
// 使用 ES6 的按需导出语法,将 getAllUser 方法导出出去
export async function getAllUser(req, res) {
try {
const [rows] = await db.query('select id, username, nickname from ev_users')
res.send({
status: 0,
message: '获取用户列表数据成功',
data: rows
})
} catch (err) {
res.send({
status: 1,
message: '获取用户列表数据失败',
desc: err.message
})
}
}