【问题标题】:URL as parameter in ExpressURL 作为 Express 中的参数
【发布时间】:2018-01-15 05:02:06
【问题描述】:

在 Express 中使用 Node.js,如何接受 URL 作为参数?

http://example.com/site/http%3A%2F%2Fgoogle.com

我有以下处理程序

app.get('/site/:dest', function (req, res, next) {
   res.end('URL = ' + req.params.dest);
});

我得到的是 404,而不是得到预期的响应:

在此找不到请求的 URL /site/http://www.google.com 服务器。

如果我请求 example.com/site/hello 它可以正常工作,但不适用于传递 URL。我认为是正斜杠转义导致了问题。

有正确的方法吗?

【问题讨论】:

  • 我建议你改用req.query 而不是req.params
  • @FelixFong 谢谢!您的方法成功了,我将在下面发布修复程序
  • 因为我之前也遇到过这个问题,祝你编码愉快

标签: node.js express url routing query-string


【解决方案1】:

对我有用

app.get('/site/*', function (req, res, next) {
  res.end('URL = ' + req.params[0]);
});

【讨论】:

    【解决方案2】:

    这是一个解决方法:

    更改了路由,现在使用req.query

    app.get('/', function (req, res, next) {
       res.end('URL = ' + req.query['site']);
    });
    

    现在,http://example.com/?site=http%3A%2F%2Fexample.com%2F%3Fhello%3Dworld%26foo%3Dbar 按预期工作。

    【讨论】:

      【解决方案3】:

      您需要对参数的 URL 进行编码。如果只是将 URL 作为参数发送,将会遇到很多问题。

      最好的方法是 url encode 参数,在你的 nodejs 端,你需要 url decode

      示例: https://www.google.com 将是 https%3A%2F%2Fwww.google.com

      【讨论】:

      • 你知道我需要把解码方法放在哪里吗,因为路由是由 Express 框架处理的?
      • 我认为这将有助于stackoverflow.com/questions/34576659/… 解码需要在您的处理程序中。您的网址将是一个参数,您只需要解码参数即可恢复您的网址
      猜你喜欢
      • 2017-08-17
      • 2023-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多