当前位置: 首页 > 面试题库 >

在中间件中获取路由定义

柳深
2023-03-14
问题内容

有谁知道是否有可能获得用于触发路线的路径?

例如,假设我有这个:

app.get('/user/:id', function(req, res) {});

使用以下简单的中间件

function(req, res, next) {
     req.?
});

我希望能够/user/:id使用中间件,但不是req.url


问题答案:

你想要的是req.route.path

例如:

app.get('/user/:id?', function(req, res){
  console.log(req.route);
});

// outputs something like

{ path: '/user/:id?',
  method: 'get',
  callbacks: [ [Function] ],
  keys: [ { name: 'id', optional: true } ],
  regexp: /^\/user(?:\/([^\/]+?))?\/?$/i,
  params: [ id: '12' ] }

http://expressjs.com/api.html#req.route

编辑:

正如评论中所解释的,进入req.route中间件是困难/
hacky。路由器中间件是填充req.route对象的中间件,它可能处于比您正在开发的中间件更低的级别。

这样,req.route只有在您插入路由器中间件以req由Express自身执行之前为您解析中间件的情况下,获取才有可能。



 类似资料:
  • 问题内容: 我有一个使用httprouter和negroni的Web服务器。用户通过外部OAuth登录此系统。我们将令牌保存到表明他们是否已登录的加密会话中。我想使用中间件来验证此令牌是否存在,如果不存在,则将用户踢回到登录页面。我想从身份验证中间件中排除一些路由。negroni自述文件中有一个使用大猩猩mux进行此操作的示例,但是我无法完全理解使用httprouter进行此操作的可扩展性。类似于

  • 概述 首先同步下项目概况: 上篇文章分享了,路由中间件 - 日志记录,这篇文章咱们分享:路由中间件 - 捕获异常。当系统发生异常时,提示 “系统异常,请联系管理员!”,同时并发送 panic 告警邮件。 什么是异常? 在 Go 中异常就是 panic,它是在程序运行的时候抛出的,当 panic 抛出之后,如果在程序里没有添加任何保护措施的话,控制台就会在打印出 panic 的详细情况,然后终止运行

  • 问题内容: 我只想验证一下内容,但无法在Express文档或在线文档中找到与此相关的内容(尽管我知道这是一个功能)。 我可以对其进行测试,但我实际上并没有一个很好的模板,想听听社区的意见。 如果我这样定义快递路线: 我还可以定义一个中间件并直接加载它,例如 但是,我还可以链接这些路由中的至少一个来运行额外的中间件,例如身份验证,如下所示: 这些是无限可链接的吗?如果我愿意,可以在给定的路由上添加1

  • 我有一个路由器像下面: 以下是我想要实现的目标: 如果未登录,将用户重定向到 如果用户在登录后试图访问,请将其重定向到root 因此,现在我尝试在

  • 问题内容: 我正在将node与express和passportjs一起使用,以限制对位于私有文件夹中的文件的访问。我将代码简化为以下内容。公共静态文件夹中的所有内容都可以正常工作,但通过使用staticMiddleware定位到私有文件夹的路由将返回404错误。 我使用的以下参考似乎对其他人有用,因此我一定会丢失一些东西。这对我来说不起作用,对于私有区域中的内容仅显示404响应。 我本可以发誓我以

  • 本文向大家介绍详解react如何在组件中获取路由参数,包括了详解react如何在组件中获取路由参数的使用技巧和注意事项,需要的朋友参考一下 路由参数 假如我们有很多 list 页面,这些页面除了动态内容不同,其他的页面部分都相同,这个时候需要怎么配置路由和组件呢? 这种场景就需要用到路由的参数功能,增加一条包含参数的路由配置。 注意 path 属性中的 :id 就是该路由的参数( param )。