Node+Express+Mysql搭建API接口平台(一)入门篇
本地环境
- node
- npm
- express的安装
全局安装
npm install express -g
npm install -g express-generator
(为什么要有这一步)
4.x版本,把generator分离出来,需要单独安装
安装mysql
数据库连接与测试加速
先改写一下代码
删除bin/www
将app.js
作为启动文件
app.js
做出以下改动
新建数据库
在项目的根目录下新建util/dbconfig.js
const mysql = require("mysql")
module.exports = {
// 数据库配置
config: {
host: 'localhost',
port: 3306,
user: 'root',
password: 'IKUN1220', // 数据库密码
database: 'exapp',
},
// 连接数据库 使用mysql的连接池的连接方式
// 连接池对象
sqlConnect: function (sql, sqlArr, callback) {
var pool = mysql.createPool(this.config)
pool.getConnection((err, conn) => {
console.log("12345")
if (err) {
console.log("链接失败")
return
}
// 事件驱动回调
conn.query(sql, sqlArr, callback)
// 释放连接
conn.release()
})
}
}
在routes/index.js
中编写一部分代码
var express = require('express');
var router = express.Router();
var dbConfig = require("../util/dbconfig")
/* GET home page. */
router.get('/', function (req, res, next) {
var sql = "select * from cate"
var sqlArr = []
var callback = (err, data) => {
if (err) {
console.log("连接出错了")
} else {
res.send({
'list': data
})
}
}
dbConfig.sqlConnect(sql, sqlArr, callback)
// res.render('index', { title: 'Express' });
});
module.exports = router;
请求方法的封装
在根目录下新建controllers/cateControl.js
var dbConfig = require("../util/dbconfig")
// 获取分类
geetCate = (req, res) => {
var sql = "select * from cate"
var sqlArr = []
var callback = (err, data) => {
if (err) {
console.log("连接出错了")
} else {
res.send({
'list': data
})
}
}
dbConfig.sqlConnect(sql, sqlArr, callback)
}
module.exports = {
geetCate
}
再次修改router/index.js
var express = require('express');
var router = express.Router();
var cate = require("../controllers/cateController")
/* GET home page. */
router.get('/', cate.geetCate);
module.exports = router;
整理app.js
, 删除不需要用的代码, 修改后代码:
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var app = express();
// 改写
var http = require('http');
var server = http.createServer(app);
app.use(express.urlencoded({
extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/users', usersRouter);
server.listen("3000");
带参数获取列表
在controllers/cateControl.js
中新增以下代码:
// 获取指定分类的文章列表
getPostCate = (req, res) => {
let {
id } = req.query;
var sql = `select * from post where cate_id=?`
var sqlArr = [id]
var callback = (err, data) => {
if (err) {
console.log("连接出错了")
} else {
res.send({
'list': data
})
}
}
dbConfig.sqlConnect(sql, sqlArr, callback)
}
module.exports = {
geetCate,
getPostCate
}
在router/index.js
中新增以下代码:
router.get('/getPostCate', cate.getPostCate)