閱讀更多系列文章請訪問我的GitHub部落格,示例程式碼請訪問這裡。
建立路由
在之前的例子中,我們總是要通過if else語句來判斷請求的介面路徑,並進行相應操作。
這樣會極大地降低開發效率,也不利於後期程式碼維護。
因此,通常的開發中,都會使用路由對不同的介面進行操作。
現在我們就來自己實現一個簡單的路由:
程式碼示例:/lesson27/lib/router.js
1. 先建立一個router物件,用於儲存路由表。其中有2個屬性,分別為get、post,分別用於儲存相應get、post請求地址的回撥方法。
// 建立路由表
let router = {
// 儲存get請求的路由
get: {
},
// 儲存post請求的路由
post: {
}
}
複製程式碼
2. 建立一個addRouter方法,用於新增路由配置,引數method為請求方法,url為請求地址,callback為處理該請求的回撥函式。
// 新增路由的方法,method為請求方法,url為請求地址,callback為處理該請求的回撥函式
function addRouter(method, url, callback) {
// 為便於處理,將method和url統一轉換成小寫
method = method.toLowerCase()
url = url.toLowerCase()
// 將處理請求的回撥函式,按方法名和地址儲存到路由表中
router[method][url] = callback
}
複製程式碼
3. 建立一個findRouter方法,用於查詢相應路由的回撥函式。引數method為請求方法,url為請求地址,返回處理路由的回撥函式。
// 查詢處理請求的回撥函式的方法,method為請求方法,url為請求地址,返回處理路由的回撥函式
function findRouter(method, url) {
// 為便於處理,將method和url統一轉換成小寫
method = method.toLowerCase()
url = url.toLowerCase()
// 找到路由對應的回撥函式,不存在則預設返回null
const callback = router[method][url] || null
// 將回撥函式返回
return callback
}
複製程式碼
4. 將路由配置作為模組匯出
// 將新增路由和查詢路由方法匯出
module.exports = {
addRouter,
findRouter
}
複製程式碼