Node配合Express框架获取参数主要有以下4种形式:
- req.body
- req.params
- req.param()
- req.query
那么,以上几种形式获取参数的值适用于什么情景呢?这4种获取参数值的方式各有什么区别和联系呢?
适用情景案例
req.body
req.body在官方文档是没有提供的,但是它也是很好用的获取表单参数的方法。req.body是配合Express中间件bodyParser()中间件提供的。当bodyParser()中间件使用后,这个对象默认为 {},req.body可以获取到post到body中的内容。
举个栗子:
|
|
|
|
req.params
这是一个数组对象,命名过的参数会以键值对的形式存放。 比如你有一个路由/user/:name, name属性会存放在req.params.name. 这个对象默认为 {}.
举个栗子:
|
|
当使用正则表达式定义路由的时候,req.params[N]会是这个应用这个正则后的捕获分组, N是代表的是第N个捕获分组。这个规则同样适用于全匹配的路由,如 /file/*
|
|
req.param(name)
req.param()是req.query、req.body、以及req.params获取参数的三种方式的封装。req.param(name)返回name参数的值。
举个栗子:
和上面的req.body方法类似
|
|
req.query
这是一个解析过的请求参数对象,默认为{}.
举个栗子:
|
|
区别与联系
总结出以下4点:
1、对于path中的变量,均可以使用req.params.xxxxx方法
2、对于get请求的?xxxx=,使用req.query.xxxxx方法
3、对于post请求中的变量,使用req.body.xxxxx方法
4、以上三种情形,均可以使用req.param()方法,所以说req.param()是req.query、req.body、以及req.params获取参数的三种方式的封装。