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
获取参数的三种方式的封装。