我想做这样的事情。如果有或没有某个查询字符串,我想使用不同的中间件。
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/