【问题标题】:Node.js Express complex routesNode.js 表达复杂的路由
【发布时间】:2018-02-13 14:13:25
【问题描述】:

我是 Node.js 和 Express 的新手。

我的问题与 Express.js 中的路由绑定。

我需要在我的项目中匹配下一个 url:example.com/?campaign=123&click=123

我在app.get() 方法中写了下一个条件:

app.get('/?campaign=:id&click=:click', ...).

我已经在express route tester 中检查过,一切正常,但在我的测试服务器中却没有。

请帮我解决我的问题。谢谢大家。

【问题讨论】:

  • 你能分享一些代码吗?
  • require('dotenv').config();常量表达 = 要求(“表达”);常量应用程序 = 快递();常量 appPort = process.env.APP_PORT; app.get('/campaign=:id&click=:click', (req, res) => { res.cookie('campaign', req.params.id); res.coocke('click', req.params.点击); res.redirect(301, '/'); }); app.get('/', (req, res) => res.sendFile(__dirname + '/dist/index.html'));
  • 请查看答案
  • 您需要使用 example.com?campaign=123&click=123 而不是 example.com/?campaign=123&click=123

标签: javascript node.js express vue.js


【解决方案1】:

您不需要在路由路径中传递任何查询参数,请查看文档至here

你只需要使用req.query获取查询参数

请使用以下代码,

   // Requesting example.com?campaign=123&click=123
   app.get('/', (req, res) => {

    var campaign = req.query.campaign;
    var click = req.query.click;

    res.cookie('campaign', campaign);
    res.redirect(301, '/');

  });

希望对你有帮助!!

【讨论】:

  • 也许你是对的,但如果我转到网址:example.com/?campaign=123&click=123 我的处理程序将无法工作,因为此网址与我的路线“get(”不匹配/', (req, res) ...)"。我需要这样的东西: app.get('/?campaign=:id&click=:click', ...) 。
  • 当你点击像localhost:3000/?campaign=123&click=123这样的url时,它将映射到路由“get('/', (req, res) ...)”。
  • 路由路径中不需要提及查询参数
  • 也许我做错了什么,因为我的操作没有保存 cookie 也没有进行重定向。如果我通过下一个网址,它会忽略此操作:example.com/?campaign=123&click=123。它只是向我展示了一个我认为服务器默认指向的 index.html 文件。对不起,你花时间做什么。
猜你喜欢
  • 2020-10-10
  • 1970-01-01
  • 2011-01-03
  • 1970-01-01
  • 2014-11-07
  • 2021-07-04
  • 2013-11-20
  • 2021-09-15
  • 1970-01-01
相关资源
最近更新 更多