API 接口案例

1、案例内容:

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. 创建基本的服务器API 接口案例_第1张图片

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

API 接口案例_第2张图片

6. 创建 user_ctrl 模块API 接口案例_第3张图片 

7. 创建 user_router 模块API 接口案例_第4张图片 

8. 导入并挂载路由模块API 接口案例_第5张图片 

9. 使用 try…catch 捕获异常API 接口案例_第6张图片 

 完整代码如下:

 目录

 API 接口案例_第7张图片

index.js部分:

import mysql from 'mysql2'

const pool = mysql.createPool({
  host: '127.0.0.1',
  port: 3306,
  database: 'my_db_01',
  user: 'root',
  password: 'admin123',
})

export default pool.promise()

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, password, status from users')
        res.send({
            status: 0,
            message: '获取用户列表数据成功!',
            data: rows,
        })
    } catch (err) {
        res.send({
            status: 1,
            message: '获取用户列表数据失败!',
            desc: err.message,
        })
    }
}

 user_router.js部分:

import express from 'express'
import { getAllUser } from '../controller/user_ctrl.js'

const router = new express.Router()
router.get('/user', getAllUser)

export default router

  app.js部分:

import express from 'express'
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')
})

 package.json部分:

{
  "type": "module",
  "name": "code2",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.17.1",
    "mysql2": "^2.2.5"
  }
}

 

2、总结

能够知道如使用 ES6 的模块化语法

默认导出与默认导入、按需按需

能够知道如使用 Promise 解决回调地狱问题

romise.then()promise.catch()

能够使用 async/await 简化 Promise 的调用

方法中用到了 await,则方法需 async 修饰

能够说出什么是 EventLoop

EventLoop 示意图

能够说出宏任务和微任务的执行顺序

在执行下一个宏任务之任务

你可能感兴趣的:(ES5和ES6,AJAX,Vue,ES6模块化,JS执行机制,案例:API接口案例,javascript,前端)