Nodejs Express 4.X 中文API 4--- Router篇

相关阅读:html

 Express 4.X API 翻译[一] --  Application篇正则表达式

 Express 4.X Api 翻译[二] --  Request篇数据库

 Express 4.X Api 翻译[三] --- Response篇express

 Express 4.X Api 翻译[四] --- Router篇json

 

本篇是Express 4.0 API翻译的第四篇,本篇的内容主要是Router的相关操做。api

 

Router()

路由器是一个孤立的中间件和路由的实例。路由器能够被认为是一个”mini”的应用程序,仅能执行中间件和路由选择。每个Express程序都都会有一个内置的应用路由器。app

路由器的行为就像是一个中间件自身同样你可使用经过应用或者是在其余的路由规则内。异步

建立一个新的路由器经过使用”express.Router()”函数

路由器能够是有中间件,添加http动态路由就像是一个程序。post

而后你可使用一个路由器为一个特定的根URL这样分离您的路由来进入文件甚至是mini 应用。

 

 router.use([path],function)

使用被给定的中间件function,带有可选参数的挂载path,默认被挂载在’/’

中间件就像是一个管道,请求开始时从第一个被定义的中间件开始,顺着这个线路一直向下,匹配每个知足条件的路由。

“绑定”的路径是被剥离的以及中间件函数是不可见的。这主要影响到被绑定的中间件将会在只要后缀肯定的状况下,无论前缀是什么样子都会被执行。

这样,中间件使用”router.use()”被”定义”的顺序将会是很是重要的,它们是被顺序调用的,所以这将定义中间件的优先级。例如一般”express.logger()”是您想最早调用的中间件,来记录全部的请求。

那么如今倘若您不想记录静态文件的请求,可是又想继续记录路由和中间件的请求,你能够简单的将静态文件定义移到logger()上。

另外一个具体的例子是利用多文件目录提供静态文件服务,给予”/public”的优先级高于其余的目录。

 

 router.param([name],callback)

逻辑映射到参数。例如当’:user’存在于路由路径,你能够映射用户加载逻辑来自动为这个路由的提供req.user,或者执行参数输入验证。

下面的代码片断说明了callback是如何的像中间件,所以支持异步操做,然而假如这个参数的值在这里被命名为id。企图执行加载用户信息,而后分配给req.user,不然传递一个错误给next(err).

重要的是要意识到任何路由触发了被命名为的参数回调函数将会被顺序执行,若是next没有被传递一个error在上一级。

或者你将只传递一个回调函数,在这种状况下,你将有机会改变router.param()的api。例如express-params定义了下面的回调函数,你能够限制参数给定的正则表达式。

这个例子有点先进,检查第二个参数是否为正则表达式,返回一个行为相似于”user”参数例子的回调函数。

这个方法能够被用来验证参数的有效性,或者能够解析它们到提供的捕捉组。

router.use() 方法还支持命名参数,所以你的其余路由规则挂载点也可使用这个命名参数。

router.route(path)

返回一个路由的一个实例,你能够用于处理HTTP动态请求使用可选的中间件。使用router.route()是一种推荐的方法来避免重复路由命名和拼写错误.。

基于router.param()以前的例子,咱们看到router.route()使咱们可以容易地指定各类HTTP动态处理程序。

 

该方法从新使用’/users/:user_id’对于不一样的HTTP动态请求路径和添加处理程序。

router.VERB(path,[callback...],callback)

router.VERB()方法提供路由功能在Express,这里的VERB是HTTP动态请求的一中,就好像router.post()。多种回调函数能够被给定,全部的都将被平等对待,这种行为就像是中间件,但不一样的是这些”中间件”能够调用next(‘route’)来绕过剩下的回调函数。这种机制可用于执行先决条件路线而后将控制传递给后续的路线当这里没有继续匹配的路线时。

如下代码片断演示了最简单的路由定义。Express将路径转义为正则表达式,在内部使用匹配传入的请求。请求字符串将不被考虑在执行匹配的过程当中,例如 “GET /”将会匹配下面的规则,一样”/GET /?name=tobi”将也会被匹配。

正则表达式一样能够被使用,若是你有一些特殊的限制,正则表达式会是至关有用的,例以下面的代码将会匹配”GET /commits/71dbb9c” 一样也会匹配”GET /commits/71dbb9c..4c084f9″。

相关文章
相关标签/搜索