使用express写接口
迪丽瓦拉
2025-05-30 02:24:29
0

创建API路由模块

在这里插入图片描述

编写GET请求

在这里插入图片描述

编写POST请求

在这里插入图片描述

跨域问题

在这里插入图片描述在这里插入图片描述

在这里插入图片描述在路由前创建

//配置cors中间件,解决接口跨域问题
const cors = require('cors')
app.use(cors())

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述预检请求不会发送实质性的数据
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

mysql

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

//导入数据库模块
const mysql = require('mysql')//建立于mysql数据库的连接方式
const db = mysql.createPool({host: '127.0.0.1',port: 23306,user: 'root',password: "0071hanxiaolei",database: 'mybatis'
})//测试mysql是否可以正常工作
db.query('select 1', (err, results) => {//mysql 模块工作期间报错if (err) return console.log(err.message)//能够执行的sql语句console.log(results)
})

查询数据

在这里插入图片描述

//查询users表中的所有数据const sqlstr = 'select * from tb_user'db.query(sqlstr, (err, results) => {//查询数据失败if (err) return console.log(err.message)//查询数据成功//注意如果执行的时select 查询语句,则执行的结果时数组console.log(results)
})

插入数据

在这里插入图片描述

//向tb_user中,新增一条数据,
const user = {username: 'spin',password: '333333',gender: '1',addr: '北京'
}
//定义待执行的sql语句
const sqlstr3 = 'insert into tb_user(username,password,gender,addr) values(?,?,?,?)'//执行sql语句
db.query(sqlstr3, [user.username, user.password, user.gender, user.addr], (err, results) => {//执行sql语句失败if (err) return console.log(err.message)//成功了//知意这里执行的是insert into插入语句,则results是一个对象//可以通过 affectedRows 属性,来判断是否插入数据成功if (results.affectedRows == 1) {console.log("插入数据成功")}
}) 

在这里插入图片描述
注意:
需要表的字段与我们插入的属性一一对应

//演示插入数据的便捷方式
const sqlstr4 = 'insert into tb_user set ?'
//执行sql语句
db.query(sqlstr4, user, (err, results) => {if (err) return console.log(err.message)if (results.affectedRows == 1) {console.log("插入成功")}
})

更新数据

在这里插入图片描述

//定义sql语句
const sqlstr5 = 'update tb_user set username=?,password=? where id=?'
//执行sql语句
db.query(sqlstr5, [userinfo.username, userinfo.password, userinfo.id], (err, result) => {if (err) return console.log(err.message)//执行update语句,返回的也是一个对啊想,可以通过affectedRowsif (result.affectedRows == 1) {console.log("更新成功")}
})

在这里插入图片描述

//向tb_user中,新增一条数据,
const user = {username: 'spin',password: '333333',gender: '1',addr: '北京'
}
//演示更新用户的便捷方式
const sqlstr6 = 'update tb_user set ? where id=?'
db.query(sqlstr6, [userinfo, userinfo.id], (err, results) => {if (err) return console.log(err.message)if (results.affectedRows == 1) {console.log("更新成功")}
})

删除数据

在这里插入图片描述
在这里插入图片描述

web开发模式

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

session认证机制

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

session中间件的使用

在这里插入图片描述

在这里插入图片描述

向session中存数据

在这里插入图片描述

从session中取数据

在这里插入图片描述

清空session

在这里插入图片描述

JWT

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

JWT的使用

在这里插入图片描述
在这里插入图片描述d第二条高版本现在这么写

const {expressjwt} =require('express-jwt')

在这里插入图片描述
这个字符串是随意的,

生成token

在这里插入图片描述

将token转为json

在这里插入图片描述

const {expressjwt: expressJWT
} = require('express-jwt')//配置jwt转json对象的中间件
//只要配置成功了express-jwt这个中间件,就可以把解析出来的用户信息,挂载到req.user属性上
//可以在有token权限的接口去解析属性内容
app.use(expressJWT({secret: secretKey,algorithms: ["HS256"]
}).unless({path: ["/login"]
}))

视频里的是低版本,高版本的需要这样来设置

//具有token权限的接口,拿到token中的数据auth
app.get('/getinfo', (req, res) => {console.log(req.auth)res.send({status: 0,data: req.auth})
})

在这里插入图片描述这里的user变成了auth

//具有token权限的接口,拿到token中的数据auth
app.get('/getinfo', (req, res) => {console.log(req.auth)res.send({status: 0,data: req.auth})
})

在这里插入图片描述

捕获解析JWT失败后产生的错误

在这里插入图片描述

//全局错误中间件
app.use((err, req, res, next) => {if (err.name === 'UnauthorizedError') {return res.send({status: 401,message: "无效的token"})}res.send({status: 500,message: "未知错误"})
})

相关内容