如何在 express 中将 url 作为 "url parameter" 传递?

how to pass a url as a "url parameter" in express?

在我的 Express 应用程序中,我有一个路由器监听 api/shorten/:

    router.get('api/shorten/:longUrl', function(req, res, next) {
        console.log(req.params.longUrl);
    }

当我使用类似的东西时:

http://localhost:3000/api/shorten/www.udemy.com

我得到 www.udemy.com,这正是我所期望的。

但是当我使用时:

http://localhost:3000/api/shorten/http://www.udemy.com

我收到 404 错误。

我想在访问req.params.parameter时得到http://www.udemy.com

你需要这样逃脱:

escape("http://www.google.com")

哪个returns:

"http%3A//www.google.com"

您需要在客户端使用 encodeURIComponent,在 express 服务器中使用 decodeURIComponent,这将对 url 参数中所有不允许的字符进行编码,例如 :/

我不确定您是否仍在寻找解决此问题的方法。也许以防万一其他人试图弄清楚同样的事情,这是解决您的问题的简单方法:

app.get('/new/*', function(req, res) {

  // Grab params that are attached on the end of the /new/ route
  var url = req.params[0];

这样你就不必担心任何正斜杠被误认为是路由或目录,它会抓取 /new/ 之后的所有内容。

我只想补充一点,如果您将 ?param=some_param 之类的其他参数传递给您的 "url paramter",它不会显示在 req.params[0] 中。 相反,您可以只使用 req.url 属性.