如何在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 相关文章推荐
按钮JS复制文本框和表格的代码
Apr 01 Javascript
javascript object array方法使用详解
Dec 03 Javascript
jQuery实现类似滑动门切换效果的层切换
Sep 23 Javascript
使用typeof判断function是否存在于上下文
Aug 14 Javascript
js树插件zTree获取所有选中节点数据的方法
Jan 28 Javascript
JQuery中serialize()用法实例分析
Feb 06 Javascript
jQuery实现控制文字内容溢出用省略号(…)表示的方法
Feb 26 Javascript
jQuery实现的上传图片本地预览效果简单示例
Mar 29 jQuery
浅析vue-router jquery和params传参(接收参数)$router $route的区别
Aug 03 jQuery
vue实现循环切换动画
Oct 17 Javascript
动态内存分配导致影响Javascript性能的问题
Dec 18 Javascript
基于vue--key值的特殊用处详解
Jul 31 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
jQuery 源码分析笔记
2011/05/25 PHP
php实现的九九乘法口诀表简洁版
2014/07/28 PHP
phpExcel中文帮助手册之常用功能指南
2014/08/18 PHP
PHP时间和日期函数详解
2015/05/08 PHP
PHP实现清除MySQL死连接的方法
2016/07/23 PHP
php操作access数据库的方法详解
2017/02/22 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
PhpStorm连接服务器并实现自动上传功能
2020/12/09 PHP
XRegExp 0.2: Now With Named Capture
2007/11/30 Javascript
mysql输出数据赋给js变量报unterminated string literal错误原因
2010/05/22 Javascript
深入理解JavaScript系列(6) 强大的原型和原型链
2012/01/15 Javascript
解决Extjs 4 Panel作为Window组件的子组件时出现双重边框问题
2013/01/11 Javascript
PHP守护进程实例
2015/03/06 Javascript
基于jQuery Circlr插件实现产品图片360度旋转
2015/09/20 Javascript
深入浅析search 搜索框的写法
2016/08/02 Javascript
原生js实现商品放大镜效果
2017/01/12 Javascript
js放到head中失效的原因与解决方法
2017/03/07 Javascript
基于VUE选择上传图片并页面显示(图片可删除)
2017/05/25 Javascript
JavaScript文件的同步和异步加载的实现代码
2017/08/19 Javascript
vue页面切换过渡transition效果
2018/10/08 Javascript
vue实现简单的星级评分组件源码
2018/11/16 Javascript
JS设置自定义快捷键并实现图片上下左右移动
2019/10/17 Javascript
微信小程序页面间传递数组对象方法解析
2019/11/06 Javascript
vue点击自增和求和的实例代码
2019/11/06 Javascript
Vue 一键清空表单的实现方法
2020/02/07 Javascript
[48:29]2018DOTA2亚洲邀请赛3月30日 小组赛A组 LGD VS KG
2018/03/31 DOTA
介绍Python的Urllib库的一些高级用法
2015/04/30 Python
Python常用知识点汇总
2016/05/08 Python
Python如何使用argparse模块处理命令行参数
2019/12/11 Python
利用html5 file api读取本地文件示例(如图片、PDF等)
2018/03/07 HTML / CSS
维氏瑞士军刀英国网站:Victorinox英国
2019/07/04 全球购物
学生个人的自我评价分享
2013/11/05 职场文书
战友聚会邀请函
2014/01/18 职场文书
医德医风个人总结
2015/02/28 职场文书
Nginx反向代理及负载均衡如何实现(基于linux)
2021/03/31 Servers
JavaScript如何优化逻辑判断代码详解
2021/06/08 Javascript