Express.js如何获取URL问号后查询参数替代路由参数完成传参
问题解答
是否可以使用?后缀格式的URL?
完全可以。Express的路由规则只会匹配URL中?之前的路径部分,?之后的查询字符串不会参与路由匹配,完全可以用这种格式替代路由参数形式的URL。
调整方案
方案1:保留你当前的?50无参数名格式
你只需要删除路由定义里的:percentage路由参数,改为直接获取原始查询字符串即可:
// 调整后的路由定义,不需要匹配percentage路由参数 app.get('/assets/img/:file', (req, res) =>{ // 获取?后面的原始查询内容作为百分比参数 const percentage = req._parsedUrl.query // 可选:增加参数合法性校验,避免非法请求 if (!/^[1-9]\d*$/.test(percentage)) { return res.status(400).send('百分比参数不合法') } loadImagePercent(req, res, "private/img/"+req.params.file, percentage); });
方案2(更推荐):使用带参数名的规范查询格式
建议你调整URL格式为http://localhost:3000/assets/img/1.jpg?percentage=50,这种符合HTTP查询字符串的规范,参数获取更稳定,不需要处理原始查询串:
app.get('/assets/img/:file', (req, res) =>{ // 直接从Express解析好的query对象中获取参数 const percentage = req.query.percentage if (!percentage || !/^[1-9]\d*$/.test(percentage)) { return res.status(400).send('百分比参数不合法') } loadImagePercent(req, res, "private/img/"+req.params.file, percentage); });
内容的提问来源于stack exchange,提问作者DerFrederikHD
相关产品推荐
相关产品推荐

