chencl1986/Blog

Nodejs教程27:Node.js项目之二:实现路由

chencl1986 opened this issue · 0 comments

阅读更多系列文章请访问我的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
}