nodejs中间件

内置中间件

express中内置的中间件 - 中间件本质是一个函数


json

json是处理json请求的,获取参数 req.body

app.use(express.json())

测试json是否成功的步骤

1. 在postman发起请求

2. post请求,需要设置请求头,参数如果是json对象就选择body -json属性是双引号

3. 设置请求头 application/json

4. 在body请求体中设置传递的参数 raw 格式

urlencoded

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)   // 就是参数
})

 第三方中间件 - 都需要下载相关依赖包


body-parser中间件

获取post请求提交的参数

优点:相比较内置的express属性 兼容性好,使用率高

第一步:引入body-parser第三方中间件

const 变量 = require('body-parser')

第二步:全局使用中间件

服务器.use(变量.urlencoded({extend:false}))

第三步获取post参数

req.body

异常处理中间件和404中间件


异常处理中间件

服务器.use((err, req, res, next) => {
    // err不为null 说明异常
    if (err) {
        // 说明出错了执行错误处理程序,这里是重定向到错误页面500
        res.redirect('./error500.html')
    }
})

404中间件

服务器.use((req, res, next) => {
    // 说明没找到页面执行后续程序,这里重定向到404页面
    res.redirect('./error404.html')
})

cookie

先下载引入cookie-parser第三放中间件

const cookieparser = require('cookie-parser')

全局使用这个cookieparser - 有()

服务器.use(cookieparser())

设置cookie

res.cookie('属性名' , 属性值 , { maxAge: 时效性 })   // 单位毫秒

获取cookie

cookie存在于请求头里,是字符串,要转为对象

require('querystring').parse(req.headers.cookie)


bcryptjs加密

加密插件bcryptjs一般是用来给密码加密

下载引入bcryptjs

const bcryptjs = require('bcryptjs')

加密

bcryptjs.hashSync(要加密的字符串 , 加密次数)   // 加密次数一般为10

判断密文和明文是否相同

bcryptjs.compareSync(明文,密文)    // 相同 true 不同 false

jwt(jsonwebtoken)加密

jsonwebtoken主要就是生成token以及token验证

下载引入jsonwebtoken

const jwt = require('jsonwebtoken')

加密(生成token

jwt.sign({要加密的对象} ,自定义字符串)

获取token

token在请求头

req.headers.token

token验证

jwt.verify(要验证的token , 上次自定义字符串 , ( err , date )=>{ date 就是解密内容,也就是未加密对象 })


multer文件上传

下载引入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()

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值