如何路由到默认值并将剩余的url字符串用作客户端上的参数?

时间:2019-07-12 14:55:29

标签: javascript node.js express url routing

我仍然不熟悉node.js并表示。我想使用URL的特定部分作为客户端JS的参数。

例如,考虑以下网址及其应指向的地址

  • example.com/api/foo(API调用)
  • example.com(index.html)
  • example.com/images/cat.gif(特定文件)
  • example.com/something/bar(棘手的一个!)
  • example.com/baz(相同)

现在,最后两个应该像 example.com 一样实际服务于静态 index.html,并允许我将“ something / bar”(或“ baz”)作为参数传递index.html可以在浏览器中用于javascript

我在那里获取参数(使用window.location或添加类似的属性)都没有关系,我只想使用它。我要使用像

这样的GET参数
  • example.com?id=something/bar

我的express app.js使用如下路由:

app.use('/backend', require('./routes/backend')) // an example routing path
app.use(express.static(path.join(__dirname, 'public'))) // existing files like images, JS and CSS
app.use(function(err, req, res, next) {
  // error handling
});

我尝试过类似的事情

app.get('*:path',function (req, res) {
  let parameter = req.path // this I could use somehow
  res.redirect('/');
});

但这将重定向到/。我想我可以用它来发送一个非静态的index.html,但是它仍然会更改显示的网址。最好还是,我仍然希望能够在我的HTML / CSS中使用相对网址。

我什至不是解决我问题的正确方法,所以将不胜感激。

1 个答案:

答案 0 :(得分:0)

app.get('/:something/:bar', function(req, res) {

    let something_value = req.params.something;
    let bar_value = req.params.bar;

    //console.log(`The parameters are ${something_value} ${bar_value}`);

    //do something         

    res.redirect('/');
});

在这里,您必须转到 http://example.com/something/bar 之类的网址。