【问题标题】:expressjs router get :id multi levelexpressjs 路由器获取:id 多级
【发布时间】:2020-05-24 20:28:05
【问题描述】:

我的问题很难解释,所以我会尽力而为。

如果设置了路由器 类似的

app.get('/example/:id', function(req, res, next) { console.log(req.params.id); });

我的问题是,上面的这个例子只会捕获第一级的 :id 意思是“example.com/example/test”将在终端日志中返回“test”。

我将如何实现 example.com/example/test/sub1/sub2/sub3/sub4 所以我可以从 req.params.ids 获得所需的数组输出

{'test','sub1','sub2','sub3','sub4'}

我意识到我可以为我想要捕获的每个级别创建一个新路由器。 但我觉得有一种方法可以更简单地做到这一点。

【问题讨论】:

  • 您可以随时使用参数,但更好的方法是使用 POST 并在正文中发送这些值。要在 req.params 中将它们用作多个,您可以看到这个 app.get('/example/:id/:sub1/:sub2', function(req, res, next) { console.log(req.params); } );这将为您提供一个值为 id、sub1 和 sub2 的对象
  • Post 是理想的,但是我需要这个作为一个获取请求作为它的前端所以 url 将指向上面的这个例子。
  • @UtkarshMehrotra 也有 app.get 就像你的例子一样,这意味着如果我要降级,get 命令将看不到这个路由器。我想我的问题是当涉及到路由器时是否表达“AND 或 OR”命令

标签: node.js express


【解决方案1】:

看这个例子:id路由,也许对你有帮助

Route path: /example/:id/example1/:id1
Request URL: http://localhost:xxxx/example/1/example1/2
req.params: { "example": "1", "example1": "2" }

app.get('/example/:id/example1/:id1', function(req, res, next) { 
    console.log(req.params);
});

或者看这个例子:

app.get('/fruit/:example1/:example2', function(req, res) {
    console.log(req.params);
});

看看这个:

/api?paramA=valueA&paramB=valueB

router.get('/api', function(req, res) {
    console.log(req.query.paramA);     // valueA
    console.log(req.query.paramB);     // valueB
    console.log(req.query.paramC);     // undefined (doesn't exist)
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-12
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    相关资源
    最近更新 更多