### 路由中間件定義
<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
- 阿里短信服務
- 微信支付
- 支付寶支付
- 部署
- 更新日志