node.js - 如何从express(Node.js)中app.use中定义的请求对象获取相同的路由URL?

标签 node.js express

我定义的快速路线如下

    app.use('/announcement/edit/:AnnouncementId',function(req,res){});

现在我想在调用此路由时从请求对象中获取相同的 "/announcement/edit/:AnnouncementId"

当我打电话http://localhost:8000/announcement/edit/5a099a855f34fc3f2a7b2a9c时并打印日志如下

    console.log(req.path)

但它给了我“/announcement/edit/5a099a855f34fc3f2a7b2a9c”

我想要在 req.path 中或来自请求对象或任何其他解决方案的任何属性中使用相同的 /announcement/edit/:AnnouncementId

最佳答案

这是简单的解决方案,您需要做的是代替 req.path 直接检查最终 Controller 函数中的 req.baseUrlreq.route.path

请注意,您不会在中间件中获得req.route.path

所以你的问题的解决方案是req.baseUrl + req.route.path

另一种方法是不逐一定义路由,而是维护路由配置,动态创建应用程序路由,然后您将可以访问路由配置,以便您可以从配置中匹配的 req.path 和模式进行检查。

希望有帮助。

关于node.js - 如何从express(Node.js)中app.use中定义的请求对象获取相同的路由URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48942955/

相关文章:

node.js - 使用 faye 通过 websockets 发送 javascript 对象

node.js - 强制依赖使用特定的子依赖版本

javascript - Node js couchbase 查询调用与 couchbase View 匹配

node.js - 如何使用 Express 2.5 在 node.js 中定义部分 View

node.js - Passport serializeUser() 未使用此 authenticate() 回调调用

node.js - Mongoose 如何根据自定义字段更新(如果存在)。否则插入

node.js - 如何使用 Node require() 设置包名称的默认/后备范围

javascript - http 服务器响应异步函数的输出

node.js - vue-router 和 Express

javascript - 在这种情况下如何使用 bluebird Promise?