如何批量create/efficiently做成几千个express js路由?

How to mass create/efficiently make thousands of express js routes?

我如何批量创建路线或使用 express 高效地制作数千条路线?

我想要具有以下格式的路由 - localhost:3000/${在此处插入地址}

我是做一个 for 循环还是有一些 express 内置的功能?例如,yelp 有“https://www.yelp.com/biz/mcdonalds-san-jose-19”。我似乎找不到任何关于此的资源。

不要创建成千上万的路由。 使用路由参数很容易做到这一点:

app.get("/:address", (req, res) => {
   res.send(req.params.address); // req.params.address is the address in the route
})

来自express docs

Route parameters are named URL segments that are used to capture the values specified at their position in the URL. [...] To define routes with route parameters, simply specify the route parameters in the path of the route as shown below.

app.get('/users/:userId/books/:bookId', function (req, res) {
  res.send(req.params)
})

The name of route parameters must be made up of “word characters” ([A-Za-z0-9_]). To have more control over the exact string that can be matched by a route parameter, you can append a regular expression in parentheses, e.g. '/user/:userId(\d+)'.

对于所有具有类似形式的数千条路线,例如您的示例:

https://www.yelp.com/biz/mcdonalds-san-jose-19

您创建一个带有参数的路由,然后该路由处理程序查找该参数(在数据库中或在您的代码中查找 table)以获取指向该标记的适当内容的指针.

您可以使用如下参数实现这样的路由:

app.get("/biz/:location", (req, res) => {
    const location = req.params.location;
    // now get the appropriate content for that location using some
    // form of lookup and send the response
});

然后,您就有了一条服务于无数个可能位置的路线,无需注册无数条不同的路线,每个位置一个。

如果您不熟悉 Express 路由中的 URL 参数,:location 是一些适合那里模式的字符串的占位符以及匹配此模式的 URL模式将匹配此路由,路由处理程序可以在 req.params.location 处访问该参数,其中 location 属性 名称来自 URL 模式中使用的名称。 Express 文档 here.

中解释了更多详细信息