node.js - 使用查询字符串表达 js 路由

标签 node.js express

我想做这样的事情。如果有或没有某个查询字符串,我想使用不同的中间件。

app.get("/test?aaa=*", function (req, res) {
    res.send("query string aaa found");
});

app.get("/test", middleware, function (req, res) {
    res.send("no query string");
});

然而,我失败了。谁能帮我?谢谢。 编辑:我只需要添加中间件,我不关心查询字符串的值是什么

最佳答案

如果您打算运行相同的路由处理程序并根据查询字符串是否匹配来调用中间件,您可以使用某种包装中间件:

var skipIfQuery = function(middleware) {
  return function(req, res, next) {
    if (req.query.aaa) return next();
    return middleware(req, res, next);
  };
};

app.get("/test", skipIfQuery(middleware), function (req, res) {
  res.send(...);
});

如果你想有两个路由处理程序,你可以使用这个:

var matchQueryString = function(req, res, next) {
  return next(req.query.aaa ? null : 'route');
};

app.get("/test", matchQueryString, function (req, res) {
  res.send("query string aaa found");
});

app.get("/test", middleware, function (req, res) {
  res.send("no query string");
});

(这些显然不是非常通用的解决方案,但只是提供一个关于如何解决这个问题的想法)

关于node.js - 使用查询字符串表达 js 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31963950/

相关文章:

node.js - PhoneRTC 演示应用程序

node.js - 在 Node.js 中使用集群时出现错误

node.js - 如何使用 arrayFilters 更新数组中的元素

node.js - 如何使用 Bluebird promise AWS SQS

javascript - 如何在nodejs中将mysql中的数据显示到html div?

javascript - 如何将变量从 Node JS 传递到前端 JS

javascript - 将 AngularJS 与 Express 结合使用

node.js - 如何设置 Express 4.0 应用程序

node.js - 在node.js express中,默认路由器总是跳转到index.html静态文件

javascript - Node/Express/mysql 如何在jade 页面中获取SQL 结果?