1、自己写

  1. const http = require('http');
  2.  
  3. http.createServer(function(req,res){
  4. var get = {};
  5. if(req.url.indexOf('?')!=-1){
  6. var arr = req.url.split('?');
  7. var url = arr[0];
  8. var arr2 = arr[1].split('&');
  9. for(var i=0;i<arr2.length;i++){
  10. var arr3 = arr2[i].split('=');
  11. get[arr3[0]]=arr3[1];
  12. }
  13. }else{
  14. var url = req.url;
  15. }
  16. console.log(url,get);
  17. res.write('aaa');
  18. res.end();
  19. }).listen(8080);

2、引入querystring模块

  1. const http = require('http');
  2. const querystring = require('querystring');
  3. http.createServer(function(req,res){
  4. var get = {};
  5. if(req.url.indexOf('?')!=-1){
  6. var arr = req.url.split('?');
  7. var url = arr[0];
  8. get = querystring.parse(arr[1]);
  9. }else{
  10. var url = req.url;
  11. }
  12. console.log(url,get);
  13. res.write('aaa');
  14. res.end();
  15. }).listen(8080);

3、引入url模块

  1. const http = require('http');
  2. const urlli = require('url');
  3.  
  4. http.createServer(function(req,res){
  5. var obj = urlli.parse(req.url,true); //true解析,如果没有true,默认不解析
  6. var url = obj.pathname;
  7. var get = obj.query;
  8. console.log(url,get);
  9. res.write('aaa');
  10. res.end();
  11. }).listen(8080);

提交表单的HTML代码

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. </head>
  7. <body>
  8. <form action="http://localhost:8080/aaa" method="get">
  9. 用户:<input type="text" name="user" value=''><br>
  10. 密码:<input type="password" name="pass" value=''><br>
  11. <input type="submit" value="提交">
  12. </form>
  13. </body>
  14. </html>

个人练习如下:

  1. const http = require("http");
  2. const queryString = require("querystring");
  3. const urlNode = require('url');
  4.  
  5. http.createServer((req,res)=>{
  6. console.log(req.url); // /aaa?user=123&pass=456
  7. var get = {};
  8. var url = '';
  9. if(req.url.indexOf('?') != -1){
  10.  
  11. //方法一:切割字符串
  12. // var _arr = req.url.split('?'); //['aaa','user=123&pass=456']
  13. // url = _arr[0]; //'aaa'
  14. // var _arr2 = _arr[1].split('&'); //['user=123','pass=456']
  15. // _arr2.map((v,k,arr)=>{
  16. // var key = v.split('=')[0];
  17. // var value = v.split('=')[1];
  18. // get[key] = value;
  19. // })
  20.  
  21. //方法二:正则表达式
  22. // var query = req.url.substr(req.url.indexOf('?')+1);
  23. // var regAll = new RegExp("([^?&=]+)=([^?&=]*)", "gi");
  24. // var regSingle = new RegExp("([^?&=]+)=([^?&=]*)", "i");
  25. // var arrAll = query.match(regAll); //["user=123", "pass=456"]
  26. // arrAll.map(function(v,k,arr){
  27. // var resultArr = v.match(regSingle);
  28. // get[resultArr[1]] = resultArr[2];
  29. // })
  30. //方法三:引入querystring模块
  31. // const arr = req.url.split('?');
  32. // url = arr[0];
  33. // get = queryString.parse(arr[1]);
  34. //方法四:
  35. // const obj = urlNode.parse(req.url,true);
  36. // url = obj.pathname;
  37. // get = obj.query;
  38.  
  39. }else{
  40. url = req.url;
  41. }
  42. console.log(url,get);
  43. res.write('123456')
  44. res.end('12')
  45. }).listen(8000)

以上都 是原生node实现:

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

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

原文链接:https://blog.csdn.net/alberqing_/article/details/81452487

node环境下多种方式“get数据解析”的更多相关文章

  1. Node.js(window)基础(2)——node环境下的模块,模块间调用

    参考:http://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/00143450241959 ...

  2. node环境下:node_modules里面的文件

    node环境下:node_modules里面的文件 package.json来制定名单,需要哪些npm包来参与到项目中来,npm install命令根据这个配置文件增减来管理本地的安装包. depen ...

  3. 非node环境下的vue.js 实现简单的购物车计算功能 样式请无视

    都说vue的双向数据绑定好用,自己用了下,感觉做购物车没想象中好用.自己的实现如下: <!DOCTYPE html> <html lang="en"> &l ...

  4. 「C语言」在Windows平台搭建C语言开发环境的多种方式

    新接触C语言,如何在Windows下进行C语言开发环境的搭建值得思考并整理. 以下多种开发方式择一即可(DEV C++无须环境准备). 注:本文知识来源于  Windows 平台搭建C语言集成开发环境 ...

  5. node 环境下简单web服务器搭建代码

    零.前置 已经安装 node 环境. 一.代码片段 var http = require('http'); var path = require('path'); var fs = require(' ...

  6. 一次生产环境下MongoDB备份还原数据

    最近开发一个版本的功能当中用到了MongoDB分页,懒于造数据,于是就研究了下从生产环境上导出数据到本地来进行测试. 研究了一下,发现MongoDB的备份还原和MySQL语法还挺类似,下面请看详细介绍 ...

  7. node环境下安装vue-cli

    一. node安装 1)如果不确定自己是否安装了node,可以在命令行工具内执行: node -v  (检查一下 版本): 2)如果 执行结果显示: xx 不是内部命令,说明你还没有安装node , ...

  8. windows环境下使用MySQL导入数据乱码报错的解决办法

    Linux及Mac系统下使用source xxx.sql 可直接导入测试数据(注意必须先切换到当前xxx.sql的目录下), 但在Windows环境下导入会出现乱码报错的情况, 主要是因为编码的问题, ...

  9. ie浏览器下get方式获取数据无效问题

    在ie浏览器用get方式获取数据时因为发送得到参数地址都是一样的,所以浏览器会优先从缓存获取数据,而不去服务器请求数据,post由于参数不同所以不会影响. 解决方法: 1.  Internet选项-- ...

随机推荐

  1. Java8特性Lambda表达式

    Lambda 表达式 简介: Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性. Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中). (parame ...

  2. subprocess之check_out用法

    在python3中使用subprocess的check_out方法时,因为该输出为byte类型,所以如果要查看具体的内容时需要进行转码,如果转码不对话,会影响内容输出的可读性,如下: #1,输出解码不 ...

  3. java之工厂方法设计模式

    工厂方法模式是设计模式中应用最广泛的模式.在面向对象的编程中,对象的创建工作非常简单,对象的创建时机却很重要.工厂方法模式就是解决这个问题,它通过面向对象的手法,将所要创建的具体对象创建工作延迟到了子 ...

  4. C语言程序设计100例之(18):火柴棒等式

    例18   火柴棒等式 用n根火柴棍,可以拼出多少个形如“A+B=C”的等式?等式中的A.B.C是用火柴棒拼出的整数(若该数非零,则最高位不能是0).用火柴棒拼数字0~9的拼法如图1所示. 图1  用 ...

  5. c++.net学习笔记

    Notes for c++ learning 程序根据什么特征来区分调用哪个重载函数? 只能靠参数而不能靠返回值类型的不同来区分重载函数. 编译器根据参数为每个重载函数产生不同的内部标识符 在Visu ...

  6. Maven学习 --- <distributionManagement>

    在使用maven过程中,我们在开发阶段经常性的会有很多公共库处于不稳定状态,随时需要修改并发布,可能一天就要发布一次,遇到bug时,甚至一天要发布N次.我们知道,maven的依赖管理是基于版本管理的, ...

  7. RabbitMQ的管控台的使用说明

    1.RabbitMQ的管控台确实是一个好东西,但是如果是新手,比如刚接触RabbitMQ的时候,看到RabbitMQ的管控台也是一脸懵逼的说,慢慢接触多了,才了解一些使用. 1).RabbitMQ的管 ...

  8. [JVM 相关] Java 新型垃圾回收器(Garbage First,G1)

    回顾传统垃圾回收器 HotSpot 垃圾收集器实现 Serial Collector(串型收集器) 使用场景,大多数服务器是单核CPU. 适用收集场景:1. 新生代收集(Young Generatio ...

  9. Winform中使用DevExpress的CheckEdit控件实现多选条件搜索

    场景 Winform控件-DevExpress18下载安装注册以及在VS中使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1 ...

  10. 代码这样写更优雅,15篇 Python 技术热文

    http://mp.weixin.qq.com/s?__biz=MzA4MjEyNTA5Mw==&mid=2652565527&idx=1&sn=840c1ce854afc29 ...