获取请求很中的参数是每个web后台处理的必经之路,nodejs的 express框架 提供了四种方法来实现。
1,req.body
2,req.query
3,req.params
4,req.param()
res.params
用于get请求
url路径为:http://localhost:3000/list/001/21
路由代码:
app.get('/list/:id/:age',(req,res)=>{
res.send(req.params)
//浏览器页面结果: {"id":"001","age":"21"}
})
res.query
用于get请求
url路径为:http://localhost:3000/form?username=1&pwd=1
路由代码:
app.get('/form',(req,res)=>{
console.log(req.query)
res.send(req.query)
// {"username":"1","pwd":"1"}
})
form表单:
<form action="http://localhost:3000/form" method="get">
用户名:<input type="text" name="username">
密码:<input type="text" name="pwd" id="">
<input type="submit">
</form>
req.params包含路由参数(在URL的路径部分),而req.query包含URL的查询参数(在URL的?后的参数)。
例如,如果你有route/user/:name,那么“name”属性可作为req.params.name。
post和get方式提交的表单的参数的获取,都可用req.params获取,但是需要注意的是:
假设现在我们以Post方式提交表单到 /user/signup?123userid=222,在后台我们要获取到userid这个参数这时如果我们通过req.params.userid获取到的并不是post表单提交上来的参数,因为req.params包含路由参数(在URL的路径部分),所以它在解析参数的时候包含URL中的路由,它获取的顺序是:
1.url中路由参数
2.post请求中提交参数
3.get请求中的参数
这里获取到的是123,如果提交的路径为:/user/signup?userid=222
req.params.userid获取到的就是post提交的参数
res.body
获取请求中的数据(包含了提交数据的键值对在请求的body中,默认是underfined),由于解析body不是nodejs默认提供的,用body-parser或者multer来解析body,所以该方法需要载入“body-parser”中间件才可使用,并且该方法通常用于解析POST请求的数据,语法为“req.body.name”。
url路径为:http://localhost:3000/form
路由代码:
app.post('/form',(req,res)=>{
console.log(req.body)
res.send(req.body)
// {"username":"1","pwd":"1"}
})
form表单:
<form action="http://localhost:3000/form" method="post">
用户名:<input type="text" name="username">
密码:<input type="text" name="pwd" id="">
<input type="submit">
</form>
req.files
获取上传的文件类型数据
export let getPageShopList = async (req,res)=>{
let {img} = req.files;//获取文件类型的数据,如图片
}
req.fields
获取上传的非文件类型数据
export let getPageShopList = async (req,res)=>{
let {page} = req.fields;//获取非文件类型的数据,如页数
if(vertifyGood.page.required && !page){
res.json({
code:2002,
message:vertifyGood.page.message,
})
return
}
}