当前位置: 首页 > 面试题库 >

Express-js通配符路由覆盖了路径下的所有内容,包括路径

公风史
2023-03-14
问题内容

我试图让一条路线涵盖/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", function(req, res){
  res.end("Foo\n");
});

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

app.listen(3000);

输出:

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

我有什么选择?我想出的最好的方法是路由/fo*哪个当然不是最佳选择,因为它匹配得太多了。


问题答案:

我认为您将必须有2条路线。如果查看连接路由器的第331行,则路径中的*将替换为。+,因此将匹配1个或多个字符。

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

如果您有2条路由执行相同的操作,则可以执行以下操作以使其保持DRY状态。

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

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

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

app.listen(3000);


 类似资料:
  • Routing refers to how an application’s endpoints (URIs) respond to client requests. For an introduction to routing, see Basic routing. You define routing using methods of the Express app object that c

  • 我有一个Django Vue。我正在尝试连接到django频道的js聊天应用程序。 要访问任何聊天室,您只需访问: http://localhost:8080/rooms/"id"/ 我的javascript连接如下所示: 我的consumers.py: 我的routing.py: 我的项目routing.py: 问题是,我无法连接到websocket,我的django服务器说: [失败实例:回溯

  • 我有一个API,它允许传入任何任意路径,例如所有这些: 是有效路径。我试着这样描述: 但是https://generator.swagger.io在路径中编码斜线,所以不起作用。那么有没有办法用Swagger来描述我的API呢?

  • 每个路由可以有不同的属性; 一些常见的属性是: path - 应用程序在特定路由上时在浏览器中显示的URL component - 当应用程序在特定路由上时要呈现的组件 pathMatch - 默认为’prefix’的可选属性。 确定是匹配完整的网址还是仅匹配开头。 当定义一个具有空路径字符串的路径设置pathMatch为’full’时,否则它将匹配所有路径。 children - 表示此路由的子

  • Tango支持4种形式的路由匹配规则 静态路由 tg.Get("/", new(Action)) tg.Get("/static", new(Action))匹配 URL:/ 到 Action结构体的Get函数 匹配 URL:/static 到 Action结构体的Get函数 命名路由 tg.Get("/:name", new(Action)) tg.Get("/(:name)", new(Act

  • 我的目标是开发一个单一的骆驼路线来映射这些服务器,接受路径中服务器的名称。类似于这样: 我的(简化且不起作用)Blueprint.xml: 问题是,我不知道如何从路径中移除/center、/north或/south,因此头部被传递给目标服务,而目标服务不知道如何处理它。调用: