学习express的第二天(依赖篇)

安装依赖

安装 boom 依赖(处理异常信息):

npm i -S boom

//boom的使用

next(boom.notFound('接口不存在'))

安装body-parser中间件(获取 POST 请求中的参数):

npm i -S body-parser

//在app.js引入
const bodyParser = require('body-parser')


app.use(bodyParser.urlencoded({ extended: true }))
app.use(bodyParser.json())


//使用
req.body

安装cors中间件(跨域中间件):

npm i -S cors

//在app.js引入
const cors = require('cors')

app.use(cors())

安装mysql(数据库连接):

npm i -S mysql


//连接
function connect() {
  return mysql.createConnection({
    host,
    user,
    password,
    database,
    multipleStatements: true
  })
}

//使用
function querySql(sql) {
  const conn = connect()
  debug && console.log(sql)
  return new Promise((resolve, reject) => {
    try {
      conn.query(sql, (err, results) => {
        if (err) {
          debug && console.log('查询失败,原因:' + JSON.stringify(err))
          reject(err)
        } else {
          debug && console.log('查询成功', JSON.stringify(results))
          resolve(results)
        }
      })
    } catch (e) {
      reject(e)
    } finally {
      conn.end()
    }
  })
}

安装crypto(用户MD5加密)

npm i -S crypto

//引入并创建方法
const crypto = require('crypto')

function md5(s) {
  // 注意参数需要为 String 类型,否则会出错
  return crypto.createHash('md5')
    .update(String(s)).digest('hex');
}

//使用
md5(`${req.body.password}${PWD_SALT}`)

安装express-validator(用于参数验证)

npm i -S express-validator

//使用
  [
    body('username').isString().withMessage('username类型不正确'),
    body('password').isString().withMessage('password类型不正确')
  ],

const err = validationResult(req)
    if (!err.isEmpty()) {
//验证未通过
}else{
//验证已通过
}

安装JWT(用于生成token)

npm i -S jsonwebtoken

//引入并使用
const token = jwt.sign(
        { username },
        PRIVATE_KEY,
        { expiresIn: JWT_EXPIRED }
)

PRIVATE_KEY: '密钥',
JWT_EXPIRED: 60 * 60, // token失效时间

安装 express-jwt(用于token验证)

npm i -S express-jwt

//引入
const expressJwt = require('express-jwt');
const { PRIVATE_KEY } = require('../utils/constant');

const jwtAuth = expressJwt({
  secret: PRIVATE_KEY,
  credentialsRequired: true // 设置为false就不进行校验了,游客也可以访问
}).unless({
  path: [
    '/',
    '/user/login'
  ], // 设置 jwt 认证白名单
});

module.exports = jwtAuth;

//使用
const jwtAuth = require('./jwt')

// 对所有路由进行 jwt 认证
router.use(jwtAuth)

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值