有没有办法在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
似乎也没有正常工作。
答案 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中指定了它。