UDN-企业互联网技术人气社区

板块导航

浏览  : 958
回复  : 2

[Nodejs] nodejs进阶(5)—接收请求参数

[复制链接]
王许柔的头像 楼主
发表于 2017-2-6 10:37:26 | 显示全部楼层 |阅读模式
本帖最后由 王许柔 于 2017-2-6 10:43 编辑

  接上篇

  1. get请求参数接收

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

  如果有个查找功能,查找关键词需要从url里接收,http://localhost:8000/search?keyword=地球。
  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请求体中。请求体里的流需要以事件形式进行接收
  1. req.on('data',  function(chunk){//通过req的data事件监听函数,每当接受到请求体的数据,就累加到post变量中      

  2.              post  +=  chunk;      

  3.   });  
复制代码
   
  我们新建一个页面,其中有一个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
1.png

  我们对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']+'\n');        
  29.             console.log('pwd:'+post['pwd']+'\n');
  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输出登录成功!

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

  下篇

相关帖子

发表于 2017-2-6 10:38:11 | 显示全部楼层
我是被标题吸引进来的
使用道具 举报

回复

发表于 2017-2-12 14:28:52 | 显示全部楼层
又见楼主分享帖子
使用道具 举报

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部