个人博客
专注IT梦想的地方

在Node.js中实现Express(二)

在上一篇《在Node.js中实现Express(一)》中分享了关于安装到启动一个express的简单案例,相信随便在百度或者谷歌上一搜都是一大堆的,所以就不多说,今天分享的依然是express的相关使用之配置路由。

我们都知道,很多时候当你打开一个域名地址后面加上一个路由,你所见到的页面会根据你输入的路由不同而呈现出不同的页面,这就是对路由的控制。

不同语言对于路由的控制有着自己的理解和方法,对于node.js中通过app.<method>(path, [callback…], callback)来实现的。

method:是指HTTP请求的方法,如GET或POST。

path:是指要通过回调函数来处理的URL的路径部分。

callback:回调函数,接收Request和Response两个对象作为参数。

例如:

app.get('/', function(req, res){
    ....
});
app.get('/reg', function(req, res){
    ....
});
app.get('/login', function(req, res){
    ....
});

当然,express还可以通过下面的方式来进行特殊的处理:

app.all('/user/*', function(req, res){
    // /user路劲的全局处理程序
});

 

我们处理通过上面的路由方式,同时还可以在路由中应用一些参数,比如 查询字符串、POST参数、正则或定义的参数等方式来处理。

对于查询参数和POST参数其实和普通的表单提交差不多处理,这里主要分享一下关于正则和自定义参数的方式,如下:

app.get(/^\/book\/(\w+)\:(\w+)?$/, function(req, res){
    res.send(req.params[0] + ':' + req.params[1]);
});

上面的代码就是表示通过正则来匹配,然后通过req.params来与url路径中的条目匹配成数组,最后显示出来即可。

 

如果是自定义参数来匹配路由进行处理,代码如下:

app.get('/find/:userid', function(req, res){
    res.send(req.param('userid'));
});

如果你输入网址 http://www.asni.cn/find/123,那么会显示123

如果你需要在里面进行路由中定义的参数,比如123,那么可以通过app.param()方法来注册一个回调函数,该方法接收已定义的参数作为第一个参数,然后是一个接收Request、Response、next和value参数的回调函数:

app.param(param, function(req, res, next, value){ … })

req和res对象与传递给路由回调函数的对象是相同的。next参数是一个用于已注册的下一个app.param()回调的回调函数(如果有的话)。你必须在回调函数中的某处调用next(),否则回调链将被破坏。value参数是从URL路径解析的参数的值。例如:

app.param('userid', function(req, res, next, value){
    console.log(value);
    next();
});

它的好处就是如果定义的参数在URL中,你可以指定被执行的回调函数。当解析URL时,如果Express发现某个参数有注册的回调函数,它就在调用路由处理程序之前调用参数的回调函数。你可以为一个路由注册多个回调函数。例如:

app.get('/find/:userid', function(req, res) {
    res.send(res.param('userid'));
});

app.param('userid', function(req, res, next, value) {
    res.send('Request with serid:' + value );
    next();
});

 

那么今天主要就分享到这里,有疑问可以留言或者邮箱给我。

赞(157) 打赏
未经允许,不得转载本站任何文章:智言个人博客 » 在Node.js中实现Express(二)

评论 1

评论前必须登录!

 

  1. 什么东西,怎么看不懂啊

    纯洁8年前 (2016-05-10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏