### 路由中间件定义
<br>
路由中间件统一写在 ``middleware`` 目录下,同样要导出一个函数,如果路由指定了中间件,那么访问路由之前会先进过这里
```
// 路由中间件
const checkLogin = (ctx,next,error) => {
const token = ctx.header?.authorization?.split('Bearer ')[1] || ''
if(ctx.validateToken(token)){
next()
}else{
error('非法请求,或Token过期')
}
}
module.exports = checkLogin
```
> ``ctx`` 代表上下文,可从中获取 ``headers`` ``request``等
```
const checkLogin = async (ctx,next,error) => {
let userInfo = await ctx.RDb().get(ctx.header.token || '')
if(userInfo){
next()
}else{
error('非法请求,或Token过期')
}
}
module.exports = checkLogin
```
<br>
> ``ctx`` 里目前还挂载了如下方法
* ctx.validateToken() // JWT校验函数,需传入一个TOKEN
* ctx.Db() // 数据库操作函数,用法和控制器里相同
* ctx.RDb() // Redis操作函数,用法和控制器里相同
* ctx.EDb() // ElasticSearch操作函数,用法和控制器里相同
* ctx.MDb() // MongoDB操作函数,用法和控制器里相同
* ctx.Log4j() // 日志输出函数,用法和控制器里相同
<br>
> ``next()`` 函数代表向下执行不阻拦
> ``error()`` 函数可以阻断程序向下执行并抛出异常,可以传三个参数,第一个参数设置抛出异常的消息内容,第二个参数设置错误码,第三个参数设置状态码。默认参数如下
```
(msg = '请求错误',errorCode = 30000,statusCode = 400)
```
- 序言
- 新手指南
- 安装
- 开发规范
- 目录结构
- 配置
- 路由
- 路由定义
- 路由中间件
- 控制器
- 控制器定义
- 内置showSuccess方法
- 内置ApiException方法
- 参数获取器getParams
- 网络请求器Fetch
- 内置工具函数
- JWT的使用
- 验证
- 验证器
- 验证规则
- 自定义验证规则
- 混合验证规则
- 分场景验证
- 数据库
- 连接数据库
- 查询数据
- 链式操作
- where
- whereOr
- whereBetweenTime
- limit
- page
- count
- order
- field
- alias
- group
- distinct
- 添加数据
- 更新数据
- 删除数据
- 联表查询
- SQL调试
- 模型
- 视图
- 模板渲染(废弃)
- 模板变量(废弃)
- 错误和日志
- 异常处理
- 日志处理
- 命令行
- 扩展库
- 使用Redis
- get
- set
- del
- hget
- hset
- hdel
- decrby
- incrby
- rpush
- rpop
- 使用MongoDB
- 模型
- 新增
- 删除
- 修改
- 查询
- 使用ElasticSearch
- 使用阿里云OSS
- 阿里短信服务
- 微信支付
- 支付宝支付
- 部署
- 更新日志