在Node.js+Express中获取URL参数遇到问题求助
解决Express中获取URL查询参数的问题
嗨,我来帮你搞定这个参数获取的问题~ 你提到的req.param.var_name确实已经被废弃了,在Express 4.x及以后的版本里,获取URL里?后面的查询参数,正确的姿势是用req.query对象。
具体实现代码
你可以这样写你的路由处理逻辑:
const express = require('express'); const app = express(); // 处理/testParam路径的GET请求 app.get('/testParam', (req, res) => { // 从req.query里直接取出id和token const id = req.query.id; const token = req.query.token; // 可以打印出来验证一下 console.log('获取到的id:', id); console.log('获取到的token:', token); // 返回给客户端看结果 res.send(`成功获取参数:id=${id},token=${token}`); }); app.listen(3000, () => { console.log('服务器启动在 http://localhost:3000'); });
为什么之前的方法不行?
Express在4.x版本后就废弃了req.param()相关方法,现在按照参数类型分三种获取方式:
req.query:用于获取URL中?后面的查询参数(就是你现在的场景:?id=4&token=sdfa3)req.params:用于获取路由中的动态参数,比如如果你的路由是/testParam/:id,访问/testParam/4时,用req.params.id就能拿到4req.body:用于获取POST请求中提交的表单或JSON数据(需要提前配置express.json()或express.urlencoded()中间件)
版本兼容性说明
你用的Node.js 8.4和9.4版本,搭配的Express肯定是4.x以上(毕竟Node.js 8.x对应Express 4.x是主流组合),所以上面的方法完全适用,不用担心版本问题。
现在启动你的服务,访问http://localhost:3000/testParam?id=4&token=sdfa3,就能正确拿到id和token的值啦~
内容的提问来源于stack exchange,提问作者solaire
相关产品推荐
相关产品推荐

