【问题标题】:Express route ('begin-url-(type:string2|string3)?-end-url')?快速路由 ('begin-url-(type:string2|string3)?-end-url')?
【发布时间】:2017-10-26 21:40:34
【问题描述】:

您好,我有这些路线:

router.route('/begin-url-presaved-:param').get(Controller.method1)
router.route('/begin-url-postsaved-:param').get(Controller.method2)
router.route('/begin-url-:param').get(Controller.method3)

网址示例:

/begin-url-presaved-param001   (type: presaved, param: param001)
/begin-url-postsaved-param001  (type: postsaved, param: param001)
/begin-url-param001            (type: null, param: param001)

有任何方法可以对这些 url 进行分组,所以它们会调用同一个控制器,那么我将只有一个路由和一个控制器。 像这样……

router.route('/begin-url-:type(presaved|postsaved)?-:param').get(Controller.method)

提前谢谢你!

【问题讨论】:

  • 你不能。路由器无法知道 param001 实际上不是一种类型。如果您想这样做,则应将以下 param001 作为 get 查询传递,因此您的路由将是 router.route('/begin-url-:param/?prepost=value).get(...)
  • 谢谢!但我需要管理 3 个 url(来自示例)>_

标签: reactjs express routes


【解决方案1】:

这似乎有效:

router.get('/begin-url:type(-presaved|-postsaved)?-:param', function(req, res) {
    res.json(req.params);
});

它并不能完全满足您的需求,因为 type 开头会有连字符,但我想这不会有问题。可以通过调整路径来摆脱type 中的连字符,但我找不到与 Express 4 和 Express 5 路线兼容的方法,所以我决定把它留在里面。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-21
    • 2016-11-16
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 2018-12-28
    • 2017-12-21
    • 1970-01-01
    相关资源
    最近更新 更多