zoukankan      html  css  js  c++  java
  • nodejs取参四种方法req.body,req.params,req.param,req.body

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

    获取请求很中的参数是每个web后台处理的必经之路

    nodejs的 express框架 提供了四种方法来实现。

    1 req.body
    
    2 req.query
    
    3 req.params
    
    4 req.param()

    首先介绍第一个req.body

     
    官方文档解释:
     
    Contains key-value pairs of data submitted in the request body. By default, it is undefined,
     
     and is populated when you use body-parsing middleware such as body-parser and multer.
     
    稍微翻译一下:包含了提交数据的键值对在请求的body中,默认是underfined,
     
    你可以用body-parser或者multer来解析body
    解析body不是nodejs默认提供的,你需要载入body-parser中间件才可以使用req.body
    此方法通常用来解析POST请求中的数据

    第二种是req.query

    官方文档解释:
     
    An object containing a property for each query string parameter in the route. 
     
    If there is no query string, it is the empty object, {}.
     
    翻译一下:包含在路由中每个查询字符串参数属性的对象。如果没有,默认为{}
    有nodejs默认提供,无需载入中间件
    
    举例说明(官方摘抄):
    
    // GET /search?q=tobi+ferret
     
    req.query.q
     
    // => "tobi ferret"
     
     
    // GET /shoes?order=desc&shoe[color]=blue&shoe[type]=converse
     
    req.query.order
     
    // => "desc"
     
    req.query.shoe.color
     
    // => "blue"
     
    req.query.shoe.type
     
    // => "converse"
    此方法多适用于GET请求,解析GET里的参数

    第三种是 req.params

     
    官方文档:
     
    An object containing properties mapped to the named route “parameters”. 
     
    For example, if you have the route /user/:name, 
     
    then the “name” property is available as req.params.name. This object defaults to {}.
     
     
     
    翻译:包含映射到指定的路线“参数”属性的对象。
     
    例如,如果你有route/user/:name,那么“name”属性可作为req.params.name。
     
    该对象默认为{}。
    nodejs默认提供,无需载入其他中间件
    
    举例说明
    
     
    // GET /user/tj
     
    req.params.name
     
    // => "tj"
    多适用于restful风格url中的参数的解析
    
    req.query与req.params的区别
    
    req.params包含路由参数(在URL的路径部分),而req.query包含URL的查询参数(在URL的?后的参数)。

    最后一种req.param()

    此方法被弃用,请看官方解释
    
     
    Deprecated. Use either req.params, req.body or req.query, as applicable.
     
    翻译:被弃用,用其他三种方式替换
    
    取得 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://liuxufei.com/blog/jishu/798.html

  • 相关阅读:
    如何在Ubuntu Server 18.04上安装Microsoft的Procmon
    如何在Ubuntu 20.04上安装Wine 5.0
    如何在Kali Linux 2020中启用SSH服务
    如何在Ubuntu 20.04 LTS Focal Fossa上安装Apache Groovy
    如何使用命令在Ubuntu 20.04 Linux上安装Vmware Tools
    在Ubuntu 20.04 LTS Focal Fossa上安装Zabbix Agent
    hdu 2089 不要62
    hdu 2093 成绩排名
    hdu 2104 hide handkerchief
    leetcode147对链表进行插入排序
  • 原文地址:https://www.cnblogs.com/JonaLin/p/11269949.html
Copyright © 2011-2022 走看看