API 接口案例--基于 MySQL 数据库 + Express对外提供用户列表的 API 接口服务

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

API 接口案例

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

npm init -y
"type": "module",
npm install express@4.17.1 mysql2@2.2.5

在这里插入图片描述

在这里插入图片描述

4. 创建基本的服务器

  1. 新建app.js
  2. 运行服务器
nodemon .\app.js

在这里插入图片描述

// 使用ES6语法默认导入
import express from "express";

const app = express()

app.listen(80, () => {
    console.log('server running at http://127.0.0.1');
})

5. 创建 db 数据库操作模块

  1. 新建db文件夹

  2. 新建index.js文件

  3. 在文件中输入以下代码导入mysql创建和数据库连接导出Promis API
    在这里插入图片描述

    在这里插入图片描述

// 导入mysql
import mysql from 'mysql2'

const pool = mysql.createPool({
    host: '127.0.0.1',
    port: 3306,
    database: 'my_db_01',//要操作的数据库名称
    user: 'root', //登录数据库的用户名
    password: 'admin123'//登录数据库密码
})

// 默认导出一个支持Promise API 的pool
export default pool.promise()

6. 创建 user_ctrl 模块

  1. 新建controller文件夹
  2. 新建user_ctrl.js文件
  3. 导入db运用async、await
import db from '../db/index.js'
// 获取所有用户列表数据
export async function getAllUser(req, res) {
    const sql = 'select id,username,nickname from ev_users'
    const [rows] = await db.query(sql)
    res.send({
        status: 0,
        message: '获取用户列表数据成功',
        date: rows,
    })
}

在这里插入图片描述

7. 创建 user_router 模块

  1. 新建router文件夹
  2. 新建user_router.js文件
import express from 'express'
// 按需导入getAllUser方法
import { getAllUser } from '../controller/user_ctrl'

// 创建路由对象
const router = express.Router()
// 挂载路由
router.get('/user', getAllUser)

// 导出
export default router

在这里插入图片描述

8. 导入并挂载路由模块

  • 在app.js中添加代码
// 使用ES6语法默认导入
import express from "express";
// 导入router
import userRouter from "./router/user_router.js";

const app = express()
// 挂载
app.use('/api', userRouter)

app.listen(80, () => {
    console.log('server running at http://127.0.0.1');
})

9. 使用 try…catch 捕获异常

在user_ctrl.js中添加代码

import db from '../db/index.js'
// 获取所有用户列表数据
export async function getAllUser(req, res) {
    try {
        const sql = 'select id,username,nickname from ev_users'
        const [rows] = await db.query(sql)
        res.send({
            status: 0,
            message: '获取用户列表数据成功',
            date: rows,
        })
    } catch (error) {
        res.send({
            status: 1,
            message: '获取用户列表数据失败',
            desc: error.message
        })
    }
}
http://127.0.0.1/api/user

在这里插入图片描述

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: mysql数据库

“API 接口案例--基于 MySQL 数据库 + Express对外提供用户列表的 API 接口服务” 的相关文章