Nodejs教程27:Node.js專案之二:實現路由

LeeChen發表於2019-03-27

閱讀更多系列文章請訪問我的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
}
複製程式碼

相關文章