前段时间在写项目的过程中首次用node写了后台API,在写的过程中也遇到了不少问题,现在统一的过一遍,整理一遍。区分一下req.body,req.params,req.param(),req.query的使用场景。 首先,express(version 4.x)中req获取参数有三种方式,分别是: 1.req.body 2.req.params 3.req.query 还有一个方法已经被废弃——req.param。 req.body=> req.body并不是node默认提供的,而是配合Express中间件bodyParser()使用的,需要下载body-parser中间件,依此来解析body。在bodyParser()中间件使用之后,这个对象默认为{},req.body可以获取到POST到body中的内容。(使用方法:req.body.xxx); req.params=> req.params是一个数组对象,命名过的参数会以键值对的形式存放。多适用于restful风格url中的参数解析,包含路由参数(在URL的路径部分)。(使用方法:req.params.xxx); req.query=> query是querystring,是解析过的请求参数对象,默认为{},包含URL的查询参数(?后的)。(使用方法:req.query.xxx); req.param=> req.param()是req.query,req.body,req.params三种方式的封装,查询优先级为:req.params>req.body>req.query,现在已经被废弃。(使用方法:req.param(xxx),返回的是xxx参数的值); 就这个方法,我在启动node服务之后一直报错,就是因为我的express版本是最新的版本,而req.param只适用于4.x一下的express,所以两者不能相容,为此,我专门去把自己的express换成了老版本。。。好傻^-^,换方法不就对了~ 总结 1.path中的变量==>req.params.xxx 2.get请求的’?xxx=yyy’==>req.query.xxx(但是也不一定只能用来解析get请求) 3.post请求中的变量==>req.body.xxx