Express利用HTTP动作提供了有意义并富有表现力的URL映射API,例如我们可能想让用户帐号的URL看起来像/user/12
的样子,下面的例子就能实现这样的路由,其中与占位标识符(本例为:id)相关的值可以被req.params
获取到。
URL路径和参数看起来没有任何分别,真正的区别在于,将被哪个对象获取,例如:下面例子和对应的URL:http://..../user/12,user将匹配路径,12将匹配参数:id,它将被
req.params
对象获取到。
app.get('/user/:id', function(req, res){ res.send('user ' + req.params.id); });
上例中当我们访问/user/12
时返回“user 12”。
注:app.get相当于在服务器注册了一个监听get请求事件的侦听器,当请求的URL满足第一个参数时,执行后面的回调函数,该过程是异步的。
路由是一个可以被内部编译
成正则表达式
的简单字符串,比如当/user/:id
被编译后,被内部编译后的正则表达式字符串看起来会是下面的样子(简化后):
\/user\/([^\/]+)\/?
要实现复杂点的,我们可以传入正则表达式直接量,因为正则捕获组是匿名的因此我们可以通过req.params
进行访问,第一个捕获组应该是req.params[0]
,第二个应该是req.params[1]
,以此类推。
app.get(/^\/users?(?:\/(\d+)(?:\.\.(\d+))?)?/, function(req, res){ res.send(req.params); });
通过不同的url来测试我们定义的路由:
http://127.0.0.1:3000/users/any
[ null, null ]
http://127.0.0.1:3000/users/12
[ "12", null ] http://127.0.0.1:3000/users/12..28
[ "12", "28" ] 下面是一些路由例子,以及与之相匹配的关联路径:
"/user/:id" /user/12 "/users/:id?" /users/5 /users "/files/*" /files/jquery.js /files/javascripts/jquery.js "/file/*.*" /files/jquery.js /files/javascripts/jquery.js "/user/:id/:operation?" /user/1 /user/1/edit "/products.:format" /products.json /products.xml "/products.:format?" /products.json /products.xml /products "/user/:id.:format?" /user/12 /user/12.json
相关推荐
主要讲解 express路由
在终端中显示你所有的express路由
本篇文章主要介绍了nodejs开发——express路由与中间件 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Typescript源包装异步Express路由的简单功能 将快速路由包装在一个函数中,该函数将next方法从该路由传递到Promise的catch语句,该语句允许中间件捕获异常。 此代码是从借用的,用于处理Express中的async / await...
Express请求处理-构建模块化路由示例代码;Express请求处理-构建模块化路由示例代码;Express请求处理-构建模块化路由示例代码
主要介绍了浅探express路由和中间件的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
锻炼追踪器描述使用带有Mongoose模式的Mongo数据库创建的运动跟踪器,并使用Express路由。目录用法` npm install ` to install all packages required to run the app. These include ` express ` , ` mongoose ` ...
锻炼追踪器一个使用Mongo数据库和Mongoose模式+ Express路由的健身追踪器项目链接注意:可以在上找到已部署的应用程序。 请参阅“入门”部分,以获取有关安装,使用,贡献准则以及问题去向的更多信息。目录安装用法...
使用Express路由示例我在UCSD编码训练营为我的学生创建了一个使用节点表达的简单路由示例。 想法是通过将所有路由都放入routes文件夹并将该文件夹导入到主服务器文件中,从而消除您的顾虑。
主要介绍了Express的路由详解的相关资料,需要的朋友可以参考下
失去对所有快速路由和中间件的跟踪? 您的app.use(...) , app.METHOD(...) , app.route... express-print-routes将所有路由和中间件的树打印到文件中。 例如,您得到此: router ├── query * ├── expressInit
使用这些装饰器,您可以像下面那样编写控制器,并填充所有路由。 考阿 import { controller , get , post } from 'route-decorators' @ controller ( '/users' , middleware1 ) class UserCtrl { @ get ( '/:id' ...
使用 v2或 v3定义文件将路由控制器连接到路径。 先决条件 该库假定您正在使用: 版本6.4.0或更高版本, 任何版本,以及 版本2或版本3 。 安装 添加swagger-routes-express作为dependency : npm i swagger-routes...
使用下划线或 lodash,您现在可以扩展您的 express.js 应用程序,现在包括路由分组。 使用前缀对路由进行分组。 例如,如果您想对所有 API 路由进行分组,现在可以这样做。 看看下面的例子,了解如何实现。 var ...
Express 框架是后台的 Node 框架,所以和 jQuery、zepto、yui、bootstrap 都不一个东西。 Express 在后台的受欢迎的程度类似前端的 jQuery,就是企业的事实上的标准
模拟“ http”对象以测试和...假设您具有以下Express路线: app . get ( '/user/:id' , routeHandler ) ; 您已经创建了一个函数来处理该路由的调用: var routeHandler = function ( request , response ) { ... } ;
express路由模块化
express中常见的路由规则 主要使用的路由规则是get和post两种,即 var express = require('express'); var app = express(); app.get(); // get和post两种请求方式 app.post(); app.get()和app.post()的第一个参数...