NodeJS/ExpressJS中GET请求如何正确获取URL地址中的查询参数
问题原因
- GET请求的查询参数(即URL中
?后拼接的参数)不会被挂载到req.body对象,req.body仅用于接收POST、PUT等请求携带的请求体数据,GET请求默认不存在请求体 - Express框架会自动解析GET请求的查询参数,挂载到
req.query对象下 - 你当前的代码末尾缺失路由回调的闭合右括号,存在语法错误,会直接触发运行报错
正确实现
不需要额外引入中间件,直接从req.query中读取对应参数即可:
// url = "/getDocs?num=15" router.get("/getDocs", function(req,res,next){ console.log(req.query.num); // 输出结果为 15 res.redirect("/documents"); });
补充说明
- 如果你需要读取路由路径中的动态参数,例如路由定义为
/getDocs/:docId,请求路径为/getDocs/456,则需要从req.params.docId中取值 - 后续处理POST请求时如果需要读取
req.body,需要提前配置对应的请求体解析中间件,例如JSON格式用express.json(),表单格式用express.urlencoded({extended: true})
内容的提问来源于stack exchange,提问作者nlmm
相关产品推荐
相关产品推荐

