基于node.js的利用Epress第三方模块的AIP接口开发示例
1. 案例需求
基于 MySQL 数据库 + Express 对外提供用户列表的 API 接口服务。
用到的技术点如下:
- 第三方包 express 和 mysql2
- ES6 模块化
- Promise异步编程
- async、await 修饰
2. 主要实现步骤分析
① 搭建项目的基本结构
② 创建基本的服务器
③ 创建 db 数据库操作模块
④ 创建 user_ctrl 业务模块
⑤ 创建 user_router 路由模块
3. 实现
3.1 搭建项目的基本结构
① 初始化项目
- 项目空白目录下运行
npm init -y
② 启用 ES6 模块化支持
- 在 package.json 中声明 "type": "module"
③ 安装第三方依赖包
- 运行
npm install express@4.17.1 mysql2@2.2.5
3.2 创建基本服务器
① 根目录下建立 app.js 文件,代码如下:
查看代码
// 使用 ES6 的默认导入语法,导入 express 第三方模块 import express from 'express' // 调用 express() 方法,用 app 接收 const app = express() // 启动服务,监听8080端口,成功后执行回调函数,打印 app.listen(8080, () => { console.log('server running at http://127.0.0.1'); })
② 执行 app.js 启动服务
运行 nodemon app.js
3.3 创建 db 数据库操作模块
① 根目录下创建 bd 文件夹
② bd 文件夹内创建 index.js 文件,代码如下:
查看代码
// 1. 默认导入 mysql2 模块 import mysql from 'mysql2' // 2. 创建 mysql数据库 的连接对象,用常量 pool 接收 const pool = mysql.createPool({ host: '127.0.0.1', port: 3306, database: 'my_db', //创建的数据库名称 user: 'root', password: 'admin' //数据库的密码 }) // 向外默认导出一个支持 Promose API 的 pool export default pool.promise()
3.4 创建 user_ctrl 模块
① 根目录下创建 controller 文件夹
② controller 文件夹内创建 user_ctrl.js 文件,代码如下:
查看代码
// 1. 导入 db 数据库操作模块 import db from '../db/index.js' // 2. 获取所有用户的列表数据,并按需导出去 export async function getAllUser(req,res) { // db.query() 函数返回的是 promise 的实例对象 // 因此可以用 async/await 进行简化,还可以用 [] 解构 const [rows] = await db.query('select id,username,nickname from ev') res.send({ status: 0, message: '获取用户列表数据成功!', data: rows, }) }
3.5 创建 user_router 模块
① 根目录创建 router 文件夹
② router 文件夹内创建 user_router.js 文件,代码如下:
查看代码
// 1. 导入第三方 express 模块 import express from 'express' // 3. 从 user_ctrl.js 模块中按需导入 getAllUser 函数 import { getAllUser } from '../controller/user_ctrl.js' // 2. 创建路由对象 const router = new express.Router() // 4. 挂载路由规则 router.get('/user',getAllUser) // 5. 向外m默认导出 export default router
3.6 app.js 导入并挂载 user_router 路由模块
挂载后 app.js 代码如下:
查看代码
// 使用 ES6 的默认导入语法,导入 express 第三方模块 import express from 'express' // 1. 使用默认导入语法,导入路由对象 import userRouter from './router/user_router.js' // 调用 express() 方法,用 app 接收 const app = express() // 2. 挂载用户路由模块 app.use('/api',userRouter) // 启动服务,监听8080端口,成功后执行回调函数,打印 app.listen(8080, () => { console.log('server running at http://127.0.0.1'); })
3.7 user_ctrl.js使用try...catch捕获异常
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, xxx from ev_users') res.send({ status: 0, message: '获取用户列表数据成功!', data: rows, }) } catch (err) { res.send({ status: 1, message: '获取用户列表数据失败!', desc: err.message, }) } }
3.8 使用postman工具发起请求
http://localhost:8080/api/user
略!!!
本文来自博客园,作者:RHCHIK,转载请注明原文链接:https://www.cnblogs.com/suihung/p/16154134.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)