安装依赖
安装 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)