我正在尝试在文件URL部分中使用包含部分路径的Express 4路由端点 - 文件名。它用于动态生成的图像。我认为最好用例子来描述......
现在我的路线中有这样的东西:
app.get('/api/listing/:id/cover.png', viewListingImage)
例如此网址http://localhost:9500/api/listing/750/cover.png
与ID为750的列表匹配。
我想要的是URL,最后一部分是带有列表ID的文件名。所以我可以使用该文件名快速保存在本地。 E.g。
http://localhost:9540/api/listing/750-cover.png
所以基本上,我想用连字符替换正斜杠。
尝试了一些RegEx魔法,但没有运气。谢谢你的帮助!
答案 0 :(得分:1)
您可以在路线中使用正则表达式:
const app = require('express')();
// match /api/listing/ddd-filename
// where ddd is a series of digits
app.get(/\/api\/listing\/(\d+)-([^\/]+)/, function(req, res) {
console.log(req.params);
res.send("hello");
});
app.listen(80);
然后,如果您请求/api/listing/20-cover.png
之类的网址,您会在请求处理程序中找到:
req.params[0] === '20'
req.params[1] === 'cover.png';
正如所述here所述,将正则表达式中的捕获组放入req.params。
正如我在评论中所说,你也可以这样做:
app.get('/api/listing/:filename', function(req, res) {
// parse req.params.filename yourself here
});