手记

nodejs开发 express路由与中间件

http://host[:port][path]
http:表示一种网络协议。
host:表示主机。
port:表示端口,可选字段,不提供时默认为80。
path:指定请求资源的URI(统一资源标识符),如果URL中没有给出path,一般会默认成”/“(通常由浏览器或者其它HTTP客户端完成补上)
然而,所谓路由,就是如何处理HTTP请求中的路径部分
(比如“http://xxx.com/list/news”这个URL,路由将决定怎么处理/list/news这个路径
app.get(‘/’,callback)
上面这个代码我们很熟悉了,表示我们添加了一条路由,指定”/“这个路径由get的第二个参数所代表的函数callback来处理。
</br>
[下面开始讲Express路由]
来看一下Express的路由定义规则:
app.verb(path,[callback...],callback)
同样,对这个定义公式的每个参数说明一下:
1、verb表示方法,可以是get、post、put、delete等,常用的当然就是前面两个。
2、path表示路径,可以是一个字符串(String),也可以是一个正则表达式(Regex)。
3、callback表示路径处理函数,里面有个next方法,可以用next(),也可以用next('router'),下面我会用实例来说明它们的区别。
由上可见,关于verb只要知道url发送的是get请求和表单可提交post请求数据就行,所以,本篇下面开始就从path和callback两个点来介绍Express路由的几乎所有使用规则。
一、路由中的路径(path)
String:
路径是字符串的情况,举三个例子:
1、匹配/list
在地址栏中输入:
http://localhost:1234/list
浏览器窗口输出:
This is list
2、匹配/list/news
http://localhost:1234/list/news
This is news
3、匹配/list/news/123
http://localhost:1234/list/news/123
This is list news:123
Regex:
路径是正则表达式的情况,举两个例子:
1、匹配/mobile/1[十个数字]
http://localhost:1234/mobile/1开头11位数字
This is a mobile ......
2、匹配abcd和acd
http://localhost:1234/abcd
匹配abcd和acd
好了,这些并不难,在举例子就是讲正则表达式了,哈
二、路由中的句柄(callback)
有关路由中的句柄,这里我讲清楚两个问题:
1、next()和next('route')
这两个方法是路由反馈函数自带的方法。
</br>
实例如下图所示:
</br>

</br>
有三个位置加了next()或者next('route'),我们这里只需要讲清楚这两者的区别,我们就只需要关注位置1,为了让第二个相同路由执行,位置2可以是next(),也可以是next('router'),表示执行下一个相同路由。
通过测试,发现:
当位置1是next()时输出的是:
1234
当位置1是next('router')时输出的是:
134
由此可知,当位置1是next()方法时,会先执行下一个callback,当为next('router')时,会直接跳过下一个callback直接执行下一个相同路由。这也就是二者区别。

0人推荐
随时随地看视频
慕课网APP