首先感谢这个小姐姐的视频:bilibili-特困女程序员
然后就是附上源码:apiLearn
Node安装及配置
MySQL的安装及配置
数据库可视化工具:Navcat、
接口测试工具:Postman
express
安装:npm install express -g
npm install -g express-generator (express 4.x版本后,把generator 分离出来了)
以上安装及配置,自己解决
express <项目名称>
express apiLearn
创建后的目录是这样的
接下来vsCode打开该项目,进行安装所需要的依赖 npm install
等待安装成功后,就可以启动项目:npm start
浏览器访问 :localhost:3000 (项目默认3000端口,具体查看 bin/www)
项目初始化已完成,接下来就开始优雅的敲代码了~
入口文件之前是在bin/www的目录下,现在我们将它改成在app.js下,并删除bin目录
现在用 node app.js 启动项目 访问 localhost:3000 依然能访问
1.安装mysql:npm install mysql --save
2.利用Navcat创建一个数据库并新建一张表,并添加一些数据,待会儿要用到
接下来就是正式编码了,
在更目录下创建utils文件夹,并创建dbconfig.js来连接数据库;
const mysql = require('mysql');
// 数据库配置
module.exports = {
config: {
host: "localhost",
port: "3306",
user: "root",
password: "123456",
database: "demo"
},
// 连接数据库,使用连接池的方式
// 连接池对象
sqlConnect: function (sql, sqlArr, callback) {
var pool = mysql.createPool(this.config);
pool.getConnection((err, conn) => {
console.log("数据库连接池");
if (err) {
console.log("连接失败");
return;
} else {
console.log("连接成功...");
}
// 事件驱动回调
conn.query(sql, sqlArr, callback);
// 释放连接
conn.release();
})
}
}
注意:post请求需要安装 body-parser 插件,npm install body-parser --save,并在入口文件引入
正式进入到写接口环节
附上代码 :
var dbConfig = require('../utils/dbconfig')
// 查
getStudent = (req, res) => {
var sql = "select * from students";
var sqlArr = [];
var callBack = (err, data) => {
if (err) {
res.send({
code: 400,
msg: '获取出错!',
'list': data
})
} else {
res.send({
code: 200,
msg: 'success',
'list': data
})
}
}
dbConfig.sqlConnect(sql, sqlArr, callBack);
}
// 根据id查
getStudentId = (req, res) => {
let { id } = req.query;
var sql = "select * from students where id = ?";
var sqlArr = [id];
var callBack = (err, data) => {
if (err) {
res.send({
code: 400,
msg: '获取出错!',
})
} else {
res.send({
code: 200,
msg: 'success',
'list': data
})
}
}
dbConfig.sqlConnect(sql, sqlArr, callBack);
}
// 增加
addStudent = (req, res) => {
let { head_img, name, age, sex, intro } = req.body;
console.log(req.body)
var sql = "insert into students(id,head_img,name,age,sex,intro) value (?,?,?,?,?,?)";
var sqlArr = [Math.random().toString(36).substr(-10), head_img, name, age, sex, intro];
var callBack = (err, data) => {
if (err) {
res.send({
code: 400,
msg: '添加失败',
})
} else {
res.send({
code: 200,
msg: '添加成功',
})
}
}
dbConfig.sqlConnect(sql, sqlArr, callBack);
}
// 删除
// 增加
deleteStudent = (req, res) => {
let { id } = req.query;
let sql = 'delete from students where id = ?'
let sqlArr = [id]
var callBack = (err, data) => {
if (err) {
res.send({
code: 400,
msg: '删除失败!!'
})
} else {
res.send({
code: 200,
msg: '删除成功!!',
})
}
}
dbConfig.sqlConnect(sql, sqlArr, callBack);
}
// 修改
editStudent = (req, res) => {
let { id,head_img,name,age,sex,intro } = req.body;
let sql = 'update students set head_img=?,name=?,age=?,sex=?,intro=?where id = ?'
let sqlArr = [head_img,name,age,sex,intro,id]
var callBack = (err, data) => {
if (err) {
console.log(err)
res.send({
code: 400,
msg: '更改失败!!'
})
} else {
res.send({
code: 200,
msg: '更改成功!!',
})
}
}
dbConfig.sqlConnect(sql, sqlArr, callBack);
}
module.exports = {
getStudent,
getStudentId,
addStudent,
deleteStudent,
editStudent
}
附上代码:
var express = require('express');
var router = express.Router();
const studentController = require('../controller/student')
/* GET users listing. */
//查
router.get('/all', studentController.getStudent);
//根据id查
router.get('/byId', studentController.getStudentId);
//增
router.post('/add', studentController.addStudent);
//删
router.delete('/delete', studentController.deleteStudent);
//更新
router.post('/edit', studentController.editStudent);
module.exports = router;
附上代码
这里用postman来测试接口,具体怎么测试这里就不测试了。