最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

学习使用ExpressJS 4.0中的新Router的用法

来源:动视网 责编:小采 时间:2020-11-27 22:05:27
文档

学习使用ExpressJS 4.0中的新Router的用法

学习使用ExpressJS 4.0中的新Router的用法:概述 ExpressJS 4.0中提出了新的路由Router。Router好比是一个迷你版的express应用,它没有引入views或者settings,但是提供了路由应有的API,.use,.get.param和route。 示例应用 让我们创建一个express应用,仅仅有少量routes和功能
推荐度:
导读学习使用ExpressJS 4.0中的新Router的用法:概述 ExpressJS 4.0中提出了新的路由Router。Router好比是一个迷你版的express应用,它没有引入views或者settings,但是提供了路由应有的API,.use,.get.param和route。 示例应用 让我们创建一个express应用,仅仅有少量routes和功能


创建参数中间件

如果想要校验上面传入URL的人的名字,确保名字是符合规范的,我们需要在路由中间件中去校验URL中的参数name。它有个特殊的名字,参数中间件。我们可以使用express.param()去创建它。

// server.js
...

// 获取router实例
var router = express.Router();

...

// 参数中间件 校验name参数
router.param('name', function(req, res, next, name) {
 // 在这里进行校验操作
 console.log('doing name validations on ' + name);

 // 校验通过我们把校验后的名字赋值给req对象
 req.name = name;
 // 继续处理request请求,寻找匹配的路由
 next(); 
});

// 带参数的路由 (http://localhost:8080/hello/:name)
router.get('/hello/:name', function(req, res) {
 res.send('hello ' + req.name + '!');
});

// 把定义好的路由集成到Node应用中
app.use('/', router);

现在当我们访问到/hello/:name路由,我们编写的参数中间件就会介入并做相应的校验处理。校验通过我们把校验后的名字赋值给req对象,并在相应的.get路由中使用req.name获取校验后的名字。打开浏览器,访问http://localhost:8080/hello/sally,我们可以看到浏览器展示的信息:

Hello sally!

console控制台打印出:

doing name validations on sally

如果你使用RESTful API,你甚至可以校验token是否有效,来判断用户是否有权限访问。

链式路由

我们也可以直接在app对象上创建路由。利用app.route()可以针对一个路由定义多个路由处理函数。例如,对/login路由发起get请求,展示登录界面,同时也可以对/login路由发起post请求,提交登录表单信息。我们就可以使用app.route来创建这个/login路由。

// ROUTES
// ==============================================

app.route('/login')

 // 展示登录界面 (GET http://localhost:8080/login)
 .get(function(req, res) {
 res.send('this is the login form');
 })

 // 提交登录表单 (POST http://localhost:8080/login)
 .post(function(req, res) {
 console.log('processing');
 res.send('processing the login form!');
 });

...

总结

使用Express 4.0中的路由,我们可以更灵活的定义路由:

  • 多次使用express.Router()定义一组路由
  • 使用express.Router()划分模块,并用app.use()把他们整合起来
  • 使用路由中间件对request请求进行预处理
  • 使用参数中间.param()件对URL中参数进行校验
  • 使用app.route()创建链式路由
  • 文档

    学习使用ExpressJS 4.0中的新Router的用法

    学习使用ExpressJS 4.0中的新Router的用法:概述 ExpressJS 4.0中提出了新的路由Router。Router好比是一个迷你版的express应用,它没有引入views或者settings,但是提供了路由应有的API,.use,.get.param和route。 示例应用 让我们创建一个express应用,仅仅有少量routes和功能
    推荐度:
    标签: ex router expressjs
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top