分针网—每日分享:nodejs取参四种方法req.body,req.params,req.param,req.body

摘要: nodejs取参四种方法req.body,req.params,req.param,req.body 获取请求很中的参数是每个web后台处理的必经之路,nodejs提供了四种方法来实现。
获取请求很中的参数是每个web后台处理的必经之路,nodejs的 express框架 提供了四种方法来实现。
req.body
req.query
req.params
req.param

首先介绍第一个req.body
    
    
    
    
<code class="hljs sql" style="">官方文档解释:
Contains key-value pairs of data submitted in the request body. By default, it is undefined,
and is populated when you
<span class="hljs-keyword" style="">use span>
<span class="hljs-keyword" style="">body span>-parsing middleware such
<span class="hljs-keyword" style="">as span>
<span class="hljs-keyword" style="">body span>-parser
<span class="hljs-keyword" style="">and span> multer.
稍微翻译一下:包含了提交数据的键值对在请求的
<span class="hljs-keyword" style="">body span>中,
默认是underfined,
你可以用 <span class="hljs-keyword" style="">body span>-parser或者multer来解析
<span class="hljs-keyword" style="">body span> code>

解析body不是nodejs默认提供的,你需要载入body-parser中间件才可以使用req.body
此方法通常用来解析POST请求中的数据

第二种是req.query

    
    
    
    
<code class="hljs cs" style="">官方文档解释:
An <span class="hljs-keyword" style="">object span> containing a property
<span class="hljs-keyword" style="">for span> each query
<span class="hljs-keyword" style="">string span> parameter
<span class="hljs-keyword" style="">in span> the route.
If there <span class="hljs-keyword" style="">is span> no query
<span class="hljs-keyword" style="">string span>, it
<span class="hljs-keyword" style="">is span> the empty
<span class="hljs-keyword" style="">object span>, {}.
翻译一下:包含在路由中每个查询字符串参数属性的对象。如果没有,默认为{} code>

有nodejs默认提供,无需载入中间件
举例说明(官方摘抄):
    
    
    
    
<code class="hljs haskell" style="">// <span class="hljs-type" style="">GET span>
/search?q=tobi+ferret
<span class="hljs-title" style="">req span>.query.q
// =>
<span class="hljs-string" style="">"tobi ferret" span>
// <span class="hljs-type" style="">GET span> /shoes?order=desc&shoe[color]=
blue&shoe[ <span class="hljs-class" style="">
<span class="hljs-keyword" style="">
<span class="hljs-class" style="">
<span class="hljs-keyword" style="">type span> span> span>
<span class="hljs-class" style="">]=converse span> span>
<span class="hljs-title" style="">req span>.query.order
// => <span class="hljs-string" style="">"desc" span>
<span class="hljs-title" style="">req span>.query.shoe.color
// => <span class="hljs-string" style="">"blue" span>
<span class="hljs-title" style="">req span>.query.shoe.
<span class="hljs-class" style="">
<span class="hljs-keyword" style="">type span> span>
// => <span class="hljs-string" style="">"converse" span> code>

此方法多适用于GET请求,解析GET里的参数

第三种是 req.params
    
    
    
    
<code class="hljs cs" style="">官方文档:
An <span class="hljs-keyword" style="">object span> containing properties mapped to the na
med route “parameters”.
For example, <span class="hljs-keyword" style="">if span> you have the route /user/:name,
then the “name” property <span class="hljs-keyword" style="">is span> available
"hljs-keyword" style="">as span> req. <span class="hljs-keyword" style="">params span>.na
me. This <span class="hljs-keyword" style="">object span> defaults to {}.
翻译:包含映射到指定的路线“参数”属性的对象。
例如,如果你有route/user/:name,那么“name”属性可作为req. <span class="hljs-keyword"
style =" " >params span>.name。
该对象默认为{}。 code>

nodejs默认提供,无需载入其他中间件
举例说明
    
    
    
    
<code class="hljs cs" style=""> <span class="hljs-comment" style="">// GET /user/tj span>
req. <span class="hljs-keyword" style="">params span>.name
<span class="hljs-comment" style="">// => "tj" span> code>

多适用于restful风格url中的参数的解析

req.query与req.params的区别
req.params包含路由参数(在URL的路径部分),而req.query包含URL的查询参数(在URL的?后的参数)。

最后一种req.param()
此方法被弃用,请看官方解释
    
    
    
    
<code class="hljs css" style=""> <span class="hljs-selector-tag" style="">Deprecated span>.
<span class="hljs-selector-tag" style="">Use span>
<span class="hljs-selector-tag" style="">either span>
<span class="hljs-selector-tag" style="">req span>
<span class="hljs-selector-class" style="">.params span>,
<span class="hljs-selector-tag" style="">req span>
<span class="hljs-selector-class" style="">.body span>
<span class="hljs-selector-tag" style="">or span>
<span class="hljs-selector-tag" style="">req span>
<span class="hljs-selector-class" style="">.query span>,
<span class="hljs-selector-tag" style="">as span>
<span class="hljs-selector-tag" style="">applicable span>.
翻译:被弃用,用其他三种方式替换 code>

取得 GET Request 的 Query Strings:
    
    
    
    
GET /test ?name =fred &tel =0926xxx572
app . get ( '/test' , function (req , res ) {
console . log (req .query .name ) ;
console . log (req .query .tel ) ;
} ) ;

如果是表单且是用 POST method:
    
    
    
    
<form action='/test' method='post'>
<input type='text' name='name' value='fred'>
<input type='text' name='tel' value='0926xxx572'>
<input type='submit' value='Submit'>
form>
app.post('/test', function(req, res) {
console.log(req.query.id);
console.log(req.body.name);
console.log(req.body.tel);
});

当然也可以 Query Strings 和 POST method 的表单同时使用:
    
    
    
    
<form action='/test?id=3' method='post'>
<input type='text' name='name' value='fred'>
<input type='text' name='tel' value='0926xxx572'>
<input type='submit' value='Submit'>
form>
app.post('/test', function(req, res) {
console.log(req.query.id);
console.log(req.body.name);
console.log(req.body.tel);
});

顺带补充,还有另一种方法传递参数给 Server,就是使用路径的方式,可以利用 Web Server 的 HTTP Routing 來解析,常见于各种 Web Framework。這不算是传统标准规范的做法,是属于 HTTP Routing 的延伸应用。
    
    
    
    
GET /hello /fred /0926xxx572
app . get ( '/hello/:name/:tel' , function (req , res ) {
console . log (req .params .name ) ;
console . log (req .params .tel ) ;
} ) ;



链接:http://www.f-z.cn/id/162









学习更多IT知识 加群:272292492

分针网—每日分享:nodejs取参四种方法req.body,req.params,req.param,req.body_第1张图片




你可能感兴趣的:(分针网—每日分享:nodejs取参四种方法req.body,req.params,req.param,req.body)