express中内置的中间件 - 中间件本质是一个函数
json是处理json请求的,获取参数 req.body
app.use(express.json())
测试json是否成功的步骤
1. 在postman发起请求
2. post请求,需要设置请求头,参数如果是json对象就选择body -json属性是双引号
3. 设置请求头 application/json
4. 在body请求体中设置传递的参数 raw 格式
urlencoded({extend:false}) 处理表单编码格式的参数请求 - form表单提交
app.use(express.urlencoded({extend:false}))
测试urlencoded是否成功的步骤
1. 在postman发起请求
2. post请求,需要设置请求头,如果参数是x-www-form-encoded
3. 设置请求头 application/x-www-form-encoded
4. 在body请求体中设置传递的参数 x-www-form-encoded 格式
先定义一个中间件的函数
// 实现获取post请求参数的中间件
function 自定义中间件名(req,res,next){
let str = ''
req.on('data' , (chunk)=>{
str +=chunk
})
req.on('end' , ()=>{
let obj = require('querystring').parse(str) //将参数转为对象形式
// 给req设置属性将参数以对象形式放进去
req.postDate = obj
// 继续放行
next()
})
}
使用自定义中间件 - 全局使用 -可以在不同路由中使用
app.use(自定义中间件名)
服务器名.post('接口',(req,res)=>{
res.send('req.postDate') // 这就是请求的参数
})
使用自定义中间件 - 局部使用 -只能在这个路由中使用
服务器名.post('接口', 自定义中间件名, (req,res)=>{
res.send(req.postDate) // 就是参数
})
获取post请求提交的参数
优点:相比较内置的express属性 兼容性好,使用率高
第一步:引入body-parser第三方中间件
const 变量 = require('body-parser')
第二步:全局使用中间件
服务器.use(变量.urlencoded({extend:false}))
第三步获取post参数
req.body
服务器.use((err, req, res, next) => {
// err不为null 说明异常
if (err) {
// 说明出错了执行错误处理程序,这里是重定向到错误页面500
res.redirect('./error500.html')
}
})
服务器.use((req, res, next) => {
// 说明没找到页面执行后续程序,这里重定向到404页面
res.redirect('./error404.html')
})
要先下载引入cookie-parser第三放中间件
const cookieparser = require('cookie-parser')
全局使用这个cookieparser - 有()
服务器.use(cookieparser())
设置cookie
res.cookie('属性名' , 属性值 , { maxAge: 时效性 }) // 单位毫秒
获取cookie
cookie存在于请求头里,是字符串,要转为对象
require('querystring').parse(req.headers.cookie)
加密插件bcryptjs一般是用来给密码加密的
先下载引入bcryptjs
const bcryptjs = require('bcryptjs')
加密
bcryptjs.hashSync(要加密的字符串 , 加密次数) // 加密次数一般为10
判断密文和明文是否相同
bcryptjs.compareSync(明文,密文) // 相同 true 不同 false
jsonwebtoken主要就是生成token以及token验证的
先下载引入jsonwebtoken
const jwt = require('jsonwebtoken')
加密(生成token)
jwt.sign({要加密的对象} ,自定义字符串)
获取token
token在请求头
req.headers.token
token验证
jwt.verify(要验证的token , 上次自定义字符串 , ( err , date )=>{ date 就是解密内容,也就是未加密对象 })
先下载引入multer
const multer = require('multer')
配置上传文件的地址 - 放在服务器要存储的文件夹下
const upload = multer({ 'dest' : '相对路径' })
post请求
服务器.post('接口' , upload.single('name') , (req,res)=>{
// 给上传的文件加后缀
let path = '存储的文件夹相对地址' + req.file.filename + require('path').extname( req.file.originalname )
// 重命名 - renameSync( 旧路径 , 新路径 )
fs.renameSync('存储的文件夹相对地址/' + req.file.filename , path)
res.send('上传成功')
})
下载引入 svg-captcha
const svgCaptcha = require('svg-captcha')
创建验证码
let svg = svgCaptcha.create()