微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

node.js – Express-js通配符路由以覆盖路径下的所有内容

我试图有一个路由覆盖/ foo下的所有内容包括/ foo本身。我试过使用/ foo *除了它不匹配/ foo之外的所有工作。观察:

var express = require("express"),app = express.createServer();

app.get("/foo*",function(req,res,next){
  res.write("Foo*\n");
  next();
});

app.get("/foo",res){
  res.end("Foo\n");
});

app.get("/foo/bar",res){
  res.end("Foo Bar\n");
});

app.listen(3000);

输出

$ curl localhost:3000/foo
Foo
$ curl localhost:3000/foo/bar
Foo*
Foo Bar

我的选择是什么?我想出的最好的是路由/ fo *,这当然不是非常最佳,因为它会匹配的方式多。

解决方法

我想你将有两条路线。如果查看连接路由器的第331行,路径中的*将替换为。因此将匹配1个或多个字符。

https://github.com/senchalabs/connect/blob/master/lib/middleware/router.js

如果您有两个执行相同操作的路由,您可以执行以下操作将其保持干燥。

var express = require("express"),app = express.createServer();

function fooRoute(req,next) {
  res.end("Foo Route\n");
}

app.get("/foo*",fooRoute);
app.get("/foo",fooRoute);

app.listen(3000);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐