快速路线中的变量参数

时间:2018-06-13 15:47:27

标签: express routing

有没有办法在ExpressJS中使用一个使用变量作为其第一个参数的路由?

我正在尝试做类似的事情:

app.use('/:customer/data', component);

然后在component中,执行:

router.get('/:customer/manifest', function (req, res) { ... }

如果我这样做,我无法触及我的路线,并且想知道是否有替代方案?

以下是我的代码目前的示例:

app.js

The setup before this is working correctly, so suppose we only zoom in on the route itself

// Manifest route to retrieve customer context manifest
app.use('/:customer/manifest', manifest);

manifest.js

router.get('/:customer/manifest', function (req, res) {
    console.log('Entering manifest route.');
});

module.exports = router;

我希望我的路径类似于/{customer}/manifest,它会走向正确的路线。我尝试在the Express Route Tester的帮助下使用正则表达式以及它给我的表达式:/^\/(?:([^\/]+?))\/manifest\/?$/i似乎也没有正常工作。

2 个答案:

答案 0 :(得分:0)

当然可以这样做,但您需要导出router中的component对象:

router.get('/:customer/manifest', function (req, res) { ... })

// ...

module.exports = router

然后像上面一样导入并使用它:

const express = require('express')
cont app = express()
const component = require('./component')

app.use('/:customer/data', component)

答案 1 :(得分:0)

您在代码中添加了两个路由,并且实际路径被欺骗。实际的路径是:

  

/:客户/清单/:客户/清单

你可以采用两种不同的方法

<强> app.js

app.use('/:customer/manifest', manifest);

<强> manifest.js

router.get('/', function (req, res) {
    console.log('Entering manifest route.');
});

module.exports = router;

第二条路线应为'/',因为您在之前的app.use中指定了它。