我试图有一个路由覆盖/ 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 举报,一经查实,本站将立刻删除。