1.首先搭建脚手架
生成项目
npx express-generator
npx会临时安装一个包,使用完会自动卸载
npm install
会安装package.json中记录的的依赖包
npm i mysql
启动本地服务器
npm start
注意:前提电脑上要有Express
expreess官网:Express - 基于 Node.js 平台的 web 应用开发框架 - Express 中文文档 | Express 中文网
2.然后要写一个connection.js在文件目录下面
注意:用脚手架生成项目之后没有connection.js,需要自己写一个
例如
connection.js文件内容
// 引入mysql模块(控制台npm install mysql如果没有的话需要提前安装)
const mysql = require('mysql')
// 创建连接对象
const connection = mysql.createConnection({
host: '127.0.0.1',
port: '3306',
user: 'root',
password: '',
database: 'hem', //要进入的数据库
multipleStatements: true //开启一次执行多个SQL命令
})
// 暴露连接对象
module.exports = connection
3.修改app.js
命令输入完自己生成的app.js中里面有很多没有的代码,直接复制下面的代码就可以
var express = require('express');
var path = require('path');
var logger = require('morgan'); //日志
const cors = require('cors'); // 跨域模块
//
//内容
// 例如:const userRouter = require('./routes/user')
/
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
//记录日志
app.use(logger('dev'));
//将post传参过程中的json转为对象
app.use(express.json());
//将post传参转为对象
app.use(express.urlencoded({
extended: true
}));
//托管静态资源
app.use(express.static(path.join(__dirname, 'public')));
app.use(cors())
///
//内容
//例如:app.use('/v1/user', userRouter);
///
// 错误处理中间件
app.use(function(err, req, res, next) {
//打印错误信息
console.log(err)
res.send({
code: 500,
msg: '服务器端错误'
})
});
module.exports = app;
注意:里面引入了cors跨域模块,需要下载
npm i cors
下面是举例子
routes/user.js
get,post,update,delete
// 引入express模块
const express = require('express');
// 创建路由器对象
const connection = require('../connection')
// 添加路由
const router = express.Router()
//路由 get获取
router.get('/get', (req, res, next) => {
//执行sql命令
connection.query('select * from user', (err, r) => {
if (err) {
return next(err)
}
res.send({
code: 200,
msg: '患者详情',
data: r
})
})
})
// 添加(post /add)
router.post('/add', (req, res, next) => {
// 获取post传递的参数
var obj = req.body
console.log(obj)
// 执行SQL命令,将数据插入到数据库
connection.query('insert into user set ?', [obj], (err, r) => {
if (err) {
return next(err)
}
console.log(r)
res.send({ code: 200, msg: '添加成功' })
})
})
/
// 删除(delete /del)
router.delete('/del', (req, res, next) => {
// 获取get传递参数
var obj = req.query
console.log(obj)
// 执行SQL命令
connection.query('delete from user where id=?', [obj.id], (err, r) => {
if (err) {
return next(err)
}
console.log(r)
// 如果对象下的affectedRows值为0说明删除失败,否则就是删除成功
if (r.affectedRows === 0) {
res.send({ code: 400, msg: '删除失败' })
} else {
res.send({ code: 200, msg: '删除成功' })
}
})
})
/
// 修改(put /update)
router.put('/update', (req, res, next) => {
// 获取post传递的参数
var obj = req.body
console.log(obj)
// 执行SQL命令,修改数据
connection.query('update user set ? where id=?', [obj, obj.id], (err, r) => {
if (err) {
return next(err)
}
console.log(r)
// 如果对象下changedRows值为0说明修改失败,否则修改成功
if (r.changedRows === 0) {
res.send({ code: 400, msg: '修改失败' })
} else {
res.send({ code: 200, msg: '修改成功' })
}
})
})
// 暴露路由器对象
module.exports = router
项目文件目录下的app.js
var express = require('express');
var path = require('path');
var logger = require('morgan'); //日志
const cors = require('cors'); // 跨域模块
//
const userRouter = require('./routes/user')
const companyRouter = require('./routes/company')
/
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
//记录日志
app.use(logger('dev'));
//将post传参过程中的json转为对象
app.use(express.json());
//将post传参转为对象
app.use(express.urlencoded({
extended: true
}));
//托管静态资源
app.use(express.static(path.join(__dirname, 'public')));
app.use(cors())
///
app.use('/v1/user', userRouter);
app.use('/v1/company', companyRouter);
///
// 错误处理中间件
app.use(function (err, req, res, next) {
//打印错误信息
console.log(err)
res.send({
code: 500,
msg: '服务器端错误'
})
});
module.exports = app;
ApiPost上面的接口测试
get
post
delete
update