1.创建一个空文件夹,在vscode中打开
2.执行命令开启package文件
npm init -y
3.设置根目录文件app.js
先执行 npm install express
命令安装 express
模块
执行 npm install cors
命令安装 cors
模块
// app.js
const express = require('express')
const app = express()
const routers = require('./api/api')
const cors = require('cors')// 设置静态资源管理器
app.use(express.static(__dirname + '/web'))
// 解析json数据
app.use(express.json())
// 解析urlencoded数据
app.use(express.urlencoded())// CORS (跨域资源共享) 实现
// 引入cors 使用cors中间件app.use(cors())// 错误处理中间件
app.use((err, req, res, next) => {// 处理错误信息if (err) {console.log(err.name)if (err.name == 'UnauthorizedError') {let obj = {code: 0,msg: '无效的token',}res.send(obj)} else {let obj = {code: 0,msg: '未知错误',}res.send(obj)}} else {next()}
})// 引入路由配置
app.use(routers)// 启动服务
app.listen(8888, () => {console.log('服务请求成功')
})
4. 封装mysql的数据连接池
创建一个 query
文件夹,来存放封装的数据连接池 pool.js
文件
// pool.js
const mysql = require('mysql')const pool = mysql.createPool({// 创建一个连接池host: '127.0.0.1', // 主机名user: 'root', // mysql的用户名password: 'root', // mysql的密码database: 'study', // 数据库名port: 3306, // 端口号
})// 封装一个query方法
function query(sql, cb, arr = []) {// 判断是否连接成功,第一个参数是 错误信息,第二个参数是 连接对象pool.getConnection((err, connection) => {if (err) {console.log('连接失败:' + err)return}// 执行sql语句connection.query(sql, arr, (err, res) => {if (err) {console.log('查询失败:' + err)return}cb(res) // 执行回调函数connection.release() // 释放连接})})
}// 导出连接池
module.exports = query
5.接口服务
// api.js
const express = require('express')
const router = express.Router()
const query = require('../query/pool')// 有多个接口文件时可以引入
// const shop = require('./Apis')// get请求
router.get('/userInfo', (req, res) => {query('SELECT `id`, `name`, `age`, `address` FROM `study1` WHERE 1 ',(data) => {console.log(data)res.send(data)})
})//post 请求
router.post('/addUser', (req, res) => {let { name, age, address } = req.bodylet sql = 'INSERT INTO `study1` (`name`, `age`, `address`) VALUES (?, ?, ?)'query(sql,(data) => {res.send({code: 200,msg: '添加成功',})},[name, age, address])
})// 有多个接口文件时可以引入
// router.use('/shop', shop)module.exports = router
若有多个接口文件,则都需要引入路由器
// Apis.js
const express = require('express')
const router = express.Router()
const query = require('../query/pool')router.get('/products', (req, res) => {query('SELECT `id`, `name`, `age`, `address` FROM `study1` WHERE 1 ',(data) => {console.log(data)res.send({code: 200,msg: '查询成功',data: data,})})
})module.exports = router
本项目大致结构,仅供参考