• 基于 MySQL 数据库 + Express 对外提供用户列表的 API 接口服务
  1. 搭建项目的基本结构
  2. 创建基本的服务器
  3. 创建 db 数据库操作模块
  4. 创建 user_ctrl 业务模块
  5. 创建 user_router 路由模块

    搭建项目的基本结构

  6. 启用 ES6 模块化支持

    1. 在 package.json 中声明 “type”: “module”
  7. 安装第三方依赖包
    1. 运行 npm i express@4.17.1 mysql2@2.2.5

      创建基本的服务器 —- app.js

      ```javascript // 使用 ES6 默认导入语法 import express from ‘express’ const app = express()

app.listen(8080, () => { console.log(‘server running at http://127.0.0.1‘) })

  1. <a name="nuUH8"></a>
  2. # 创建 db 数据库操作模块 --- db/index.js
  3. ```javascript
  4. import mysql from 'mysql2'
  5. const pool = mysql.createPool({
  6. host: '127.0.0.1',
  7. port: 8080,
  8. database: 'my_db_01', // 数据库名称
  9. user: 'root', // 数据库用户名
  10. password: 'admin123' // 数据库密码
  11. })
  12. export default pool.promise()

创建 user_ctrl 模块 —- controller/user_ctrl.js

  1. import db from '../db/index.js'
  2. // 使用 ES6 的按需导出语法,将 getAllUser 方法导出出去
  3. export async function getAllUser(req, res) {
  4. const [rows] = await db.query('select id, username, nickname from ev_users')
  5. res.send({
  6. status: 0,
  7. message: '获取用户列表数据成功',
  8. data: rows
  9. })
  10. }

创建 user_router 模块 —- router/user_router.js

  1. import express from 'express'
  2. // 从 user_ctrl.js 模块中按需导入 getAllUser 函数
  3. import { getAllUser } from '../controller/user_ctrl.js'
  4. // 创建路由对象
  5. const router = new express.Router()
  6. // 挂载路由规则
  7. router.get('/user', getAllUser)
  8. // 使用 ES6 的默认导出语法,将路由对象共享出去
  9. export default router

使用 try…catch 捕获异常 —- controller/user_ctrl.js

  1. import db from '../db/index.js'
  2. // 使用 ES6 的按需导出语法,将 getAllUser 方法导出出去
  3. export async function getAllUser(req, res) {
  4. try {
  5. const [rows] = await db.query('select id, username, nickname from ev_users')
  6. res.send({
  7. status: 0,
  8. message: '获取用户列表数据成功',
  9. data: rows
  10. })
  11. } catch (err) {
  12. res.send({
  13. status: 1,
  14. message: '获取用户列表数据失败',
  15. desc: err.message
  16. })
  17. }
  18. }