zoukankan      html  css  js  c++  java
  • nodejs进阶(5)—接收请求参数

    1. get请求参数接收

    我们简单举一个需要接收参数的例子

    如果有个查找功能,查找关键词需要从url里接收,http://localhost:8000/search?keyword=地球。通过前面的进阶3教程《nodejs进阶(3)—路由处理》重介绍的url模块,我们知道接收方法如下这样写

     1 //----------------6_param------------------------------------      
     2 var http = require('http');                          
     3 var url = require('url');          
     4 var router = require('./router');        
     5 http.createServer(function (request, response) {                          
     6     if(request.url!=="/favicon.ico"){  //清除第2此访问              
     7         var rdata  =  url.parse(request.url,true).query;   //获取参数
     8         if(rdata['keyword']!=undefined){  
     9             console.log(rdata['keyword']);      
    10         }       
    11         console.log("server执行完毕");   
    12         response.end();  
    13     }                          
    14 }).listen(8000);                          
    15 console.log('Server running  at  http://127.0.0.1:8000/');       

    那么在我们的控制台里会输出查询此“地球”。

    get请求我们都可以通过上述这种方式获取参数。

    2. post请求参数接收

    如果是post请求,这些参数不是通过url传递的,是包含在request请求体中。请求体里的流需要以事件形式进行接收

    req.on('data',  function(chunk){//通过req的data事件监听函数,每当接受到请求体的数据,就累加到post变量中      

                 post  +=  chunk;      

      });      

    我们新建一个页面,其中有一个post请求

     1 <html>
     2 <head>
     3 </head>
     4 <body>
     5 登录:
     6 <p>这是一个段落</p>
     7 <h1>样式1</h1>
     8 <form action="/submitLogin" method="post">
     9 用户名:<input value="" name="name">
    10 密码:<input value=""  name="pwd">
    11 <input type="submit" value="提交">
    12 </form>
    13 <!--img src="./showImg"></img-->
    14 </body>
    15 <html>

    我们请求login,有两个输入项name和pwd,当我们输入值后点击提交,会发post请求到http://localhost:8000/submitLogin

    我们对router.js进行扩展,添加submitLogin处理方法。

    之前需要引入'querystring',该模块用于实现URL参数字符串与参数对象的互相转换。

    大家需要了解学习两个常用的方法

    1)require('querystring').parse("name=eee&pwd=123")  结果:Object {name: "eee", pwd: "123"}

    2)require('querystring').stringify({name:'eee',pwd:'123'})  结果:"name=eee&pwd=123"

     1 //-----------------router.js--------------------------------
     2 var file = require('./models/file');
     3 var  url  =  require('url');      
     4 var  querystring  =  require('querystring');  //post需导入     
     5 module.exports={
     6     login:function(req,res){
     7         res.writeHead(200,  {'Content-Type':'text/html'});    
     8         var data  =  file.readfileSync('./views/login.html');      
     9         res.write(data);  
    10         res.end();      
    11     },
    12     register:function(req,res){
    13         var data=file.readfileSync('./views/register.html');//使用同步读取
    14         res.write(data);
    15         res.end();
    16     },
    17     showImg:function(req,res){
    18         file.readImg('./imgs/dog.jpg',res);//使用同步读取
    19     },
    20     submitLogin:function(req,res){
    21         var  post  =  '';  //定义了一个post变量,用于暂存请求体的信息      
    22         req.on('data',  function(chunk){//通过req的data事件监听函数,每当接受到请求体的数据,就累加到post变量中      
    23             post  +=  chunk;      
    24         });      
    25         //-------注意异步-------------      
    26         req.on('end',  function(){   //在end事件触发后,通过querystring.parse将post解析为真正的POST请求格式,然后向客户端返回。      
    27             post  =  querystring.parse(post);      
    28             console.log('name:'+post['name']+'
    ');        
    29             console.log('pwd:'+post['pwd']+'
    ');
    30             if(post['name']=="fff"&&post['pwd']=="123"){//简单写登录成功的匹配
    31                 res.write("登录成功!")
    32             }else{
    33                 res.write("用户名密码不正确")
    34             }
    35             res.end();  
    36         });    
    37     }
    38 } 

    当我们想login页面输入用户名和密码参数时,如果输入fff和123  这时候跳转到loginSubmit输出登录成功!

    如果输入其他值跳转后会提示:用户名密码不正确

  • 相关阅读:
    IDEA工具java开发之 开发中必会的技能
    IDEA工具java开发之项目初始化配置 细节和目录结构
    有关java编辑改变编码器时出现HelloWorld.java:3: 错误: 编码GBK的不可映射字符 * 瀹冨皢鎵撳嵃瀛楃�涓? Hello World
    java开发环境的搭建 第一步安装JDK 第二步配置环境变量 检查java中的jdk是否安装成功
    解决vue中使用echarts的formatter提示警告的问题
    数组去重及element UI 远程模糊查询
    有关echar图设置宽度100%不起作用的问题
    echarts 中的bar3D柱子图在geo3D地图中显示不出来
    【SQL】约束
    【SQL】视图
  • 原文地址:https://www.cnblogs.com/fangsmile/p/6252751.html
Copyright © 2011-2022 走看看