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
本項目大致結構,僅供參考