如何在node环境实现“get数据解析”代码实例


Posted in Javascript onJuly 03, 2020

1、自己写

const http = require('http');
 
http.createServer(function(req,res){
  var get = {};
  if(req.url.indexOf('?')!=-1){
    var arr = req.url.split('?');
    var url = arr[0];
    var arr2 = arr[1].split('&');
    for(var i=0;i<arr2.length;i++){
      var arr3 = arr2[i].split('=');
      get[arr3[0]]=arr3[1];
    }
  }else{
    var url = req.url;
  }
  console.log(url,get);
  res.write('aaa');
  res.end();
}).listen(8080);

2、引入querystring模块

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('?');
    var url = arr[0];
    get = querystring.parse(arr[1]);
  }else{
    var url = req.url;
  }
  console.log(url,get);
  res.write('aaa');
  res.end();
}).listen(8080);

3、引入url模块

const http = require('http');
const urlli = require('url');
http.createServer(function(req,res){
  var obj = urlli.parse(req.url,true); //true解析,如果没有true,默认不解析
  var url = obj.pathname;
  var get = obj.query;
  console.log(url,get);
  res.write('aaa');
  res.end();
}).listen(8080);

提交表单的HTML代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <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>
</body>
</html>

个人练习如下:

const http = require("http");
const queryString = require("querystring");
const urlNode = require('url');

http.createServer((req,res)=>{
  console.log(req.url);  // /aaa?user=123&pass=456
  var get = {};
  var url = '';
  if(req.url.indexOf('?') != -1){

    //方法一:切割字符串
    // var _arr = req.url.split('?'); //['aaa','user=123&pass=456']
    // url = _arr[0]; //'aaa'
    // var _arr2 = _arr[1].split('&'); //['user=123','pass=456']
    // _arr2.map((v,k,arr)=>{
    //   var key = v.split('=')[0];
    //   var value = v.split('=')[1];
    //   get[key] = value;
    // })

    //方法二:正则表达式
    // var query = req.url.substr(req.url.indexOf('?')+1);
    // var regAll = new RegExp("([^?&=]+)=([^?&=]*)", "gi");
    // var regSingle = new RegExp("([^?&=]+)=([^?&=]*)", "i");
    // var arrAll = query.match(regAll);   //["user=123", "pass=456"]
    // arrAll.map(function(v,k,arr){
    //   var resultArr = v.match(regSingle);
    //   get[resultArr[1]] = resultArr[2];
    // })
    //方法三:引入querystring模块
    // const arr = req.url.split('?');
    // url = arr[0];
    // get = queryString.parse(arr[1]);
    //方法四:
    // const obj = urlNode.parse(req.url,true);
    // url = obj.pathname;
    // get = obj.query;

  }else{
    url = req.url;
  }
  console.log(url,get);
  res.write('123456')
  res.end('12')
}).listen(8000)

以上都 是原生node实现:

下面的是express中 req.query 就可以方便的取到 { id 123456}

app.get('/article',(req,res)=>{
  console.log(req.query)
  
})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jquery 组合form元素为json格式,asp.net反序列化
Jul 09 Javascript
一步一步教你写一个jQuery的插件教程(Plugin)
Sep 03 Javascript
jquery实现TAB选项卡鼠标经过带延迟效果的方法
Jul 27 Javascript
javascript实现五星评价代码(源码下载)
Aug 11 Javascript
JavaScript中的splice方法用法详解
Jul 20 Javascript
Bootstrap文件上传组件之bootstrap fileinput
Nov 25 Javascript
基于jQuery代码实现圆形菜单展开收缩效果
Feb 13 Javascript
详解Vue+axios+Node+express实现文件上传(用户头像上传)
Aug 10 Javascript
更强大的vue ssr实现预取数据的方式
Jul 19 Javascript
three.js着色器材质的内置变量示例详解
Aug 16 Javascript
Vue.js原理分析之nextTick实现详解
Sep 07 Javascript
详解JavaScript 高阶函数
Sep 14 Javascript
JavaScrip如果基于url实现图片下载
Jul 03 #Javascript
基于VUE实现判断设备是PC还是移动端
Jul 03 #Javascript
JavaScript如何判断对象有某属性
Jul 03 #Javascript
详解element-ui动态限定的日期范围选择器代码片段
Jul 03 #Javascript
JS常见错误(Error)及处理方案详解
Jul 02 #Javascript
vue过滤器实现日期格式化的案例分析
Jul 02 #Javascript
Vue使用预渲染代替SSR的方法
Jul 02 #Javascript
You might like
咖啡的传说和历史
2021/03/03 新手入门
php 替换文章中的图片路径,下载图片到本地服务器的方法
2018/02/06 PHP
PHP学习记录之数组函数
2018/06/01 PHP
浅谈PHPANALYSIS提取关键字
2019/03/08 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
js实现格式化金额,字符,时间的方法
2015/02/26 Javascript
详谈LABJS按需动态加载js文件
2015/05/07 Javascript
js事件源window.event.srcElement兼容性写法(详解)
2016/11/25 Javascript
js以及jquery实现手风琴效果
2020/04/17 Javascript
javascript作用域链与执行环境详解
2017/03/25 Javascript
jquery将标签元素的高设为屏幕的百分比
2017/04/19 jQuery
sublime text配置node.js调试(图文教程)
2017/11/23 Javascript
用vuex写了一个购物车H5页面的示例代码
2018/12/04 Javascript
详解vue组件中使用路由方法
2019/02/12 Javascript
详解element-ui日期时间选择器的日期格式化问题
2019/04/08 Javascript
通过实例解析js简易模块加载器
2019/06/17 Javascript
基于iview-admin实现动态路由的示例代码
2019/10/02 Javascript
vue 实现强制类型转换 数字类型转为字符串
2019/11/07 Javascript
微信小程序webSocket的使用方法
2020/02/20 Javascript
vue组件中实现嵌套子组件案例
2020/08/31 Javascript
JSON stringify方法原理及实例解析
2020/10/23 Javascript
[56:42]VP vs RNG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
利用python生成一个导出数据库的bat脚本文件的方法
2016/12/30 Python
Python排序算法实例代码
2017/08/10 Python
python网络爬虫之如何伪装逃过反爬虫程序的方法
2017/11/23 Python
python实现求解列表中元素的排列和组合问题
2018/03/15 Python
Python绘制全球疫情变化地图的实例代码
2020/04/20 Python
台湾SHOPRO购物行家:亚洲首创影视.3C.家电.优质购物平台
2018/05/07 全球购物
英国网上超市:Ocado
2020/03/05 全球购物
办公室文员工作自我评价
2013/12/01 职场文书
房地产出纳岗位职责
2013/12/01 职场文书
限期整改通知书
2015/04/22 职场文书
工作感想范文
2015/08/07 职场文书
初中班干部工作总结
2015/08/10 职场文书
导游词之湖北武当山
2019/09/23 职场文书
基于Redis过期事件实现订单超时取消
2021/05/08 Redis