nodejs——http数据解析get

数据请求

  • 前台请求:form ajax jsonp
    后台相同

  • 前台< - >后台 通过 http 协议进行交互

  • 请求方式:

    • GET 数据在url中
    • POST 数据不在url
  • 前台于后台交互数据通过所谓的“消息”传播,一个消息又分两部分:header与content。

    • header: 包括url和头信息
    • content: post数据

    GET

    • 以下是一个包含表单的 html,我们在用户输入 bbb,密码输 123;
    <form action="http://localhost:8080/aaa"method:"get">  
    用户:<input type="text" name="user" value=""><br>      
    密码:<input type="password" name="pass" value=""><br>       
    <input type="submit"  value="提交">  
    </form>
    
    • js 代码:根据上述表单输入规则输入后req.url变为/aaa?user=bbb&pass=123
    const http = require('http');//引进模块
    http.createServer(function (req, res) {    
    	var GET = {};   
     	if (req.url.indexOf('?')!= -1) {       //判断请求的url有无?
              //res.url为/aaa?user=bbb&pass=123        
     	   var arr = req.url.split('?');        
     	   //arr[0]地址:/aaa        
     	   //arr[1]数据:user=bbb&pass=123       
     	   var url = arr[0];       
     	   var arr2 = arr[1].split('&');       
     	   //arr2=>["user=bbb","pass=123"]        
     	  for (var i = 0; i < arr2.length; i++) {          
     		 var arr3 = arr2[i].split('=');            
     		 GET[arr3[0]] = arr3[1];        
     	  }    
           }else{
             url = req.url;//若没有'?'则为url    
           }    
         console.log(url,GET);    
         res.end();
       }).listen(8080);
    

Query Strings模块解析数据字符串

const querystring = require('querystring');
var json = querystring.parse("user=bbb&pass=123&age=18");
console.log(json);//[user:bbb,pass:123,age:18]

既然Query String有此种功能,那么我们上文中js处理字符串的代码就可以得到简化。如下

const http = require('http');//引进模块
const querystring = require('querystring');
http.createServer(function (req, res) {    
   var GET = {};    if (req.url.indexOf('?')!= -1) {        
   var arr = req.url.split('?');        
   //res.url为/aaa?user=bbb&pass=123        
   //arr[0]地址:/aaa        
   //arr[1]数据:user=bbb&pass=123        
   var url = arr[0];        
   GET = querystring.parse(arr[1]);    
   }else{       
   	 url = req.url;   
         }    console.log(url,GET);  
              res.end();
}).listen(8080);

url模块解析整个url地址

const urlLib = require('url');
var  obj = urlLib.parse("http://www.baidu.com/index?a=1&b=2",true);
console.log(obj);

运行结果如下:
在这里插入图片描述
观察上面截图,发现,最有用的数据有pathname和query。然后我们用url模块改写例子代码。

 const http = require('http');//引进模块
 const urlLib = require('url');
 http.createServer(function (req, res) {    
 	var obj = urlLib.prase(res.url,true);//特别强调这个true参数必须写,GET才能解析为{a:'1';b:'2'}
 	var url = obj.pathname;
 	var GET = OBJ.query;
 	console.log(url,GET);  
           res.end();
 }).listen(8080);

猜你喜欢

转载自blog.csdn.net/gaoshanyangzhi_1999/article/details/82972078