node中req.params、req.query与req.body的区别,req.files与req.fields区别

获取请求很中的参数是每个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
    }
}
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

几个高兴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值