node环境下多种方式“get数据解析”
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)
- })
原文链接:https://blog.csdn.net/alberqing_/article/details/81452487
node环境下多种方式“get数据解析”的更多相关文章
- Node.js(window)基础(2)——node环境下的模块,模块间调用
参考:http://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/00143450241959 ...
- node环境下:node_modules里面的文件
node环境下:node_modules里面的文件 package.json来制定名单,需要哪些npm包来参与到项目中来,npm install命令根据这个配置文件增减来管理本地的安装包. depen ...
- 非node环境下的vue.js 实现简单的购物车计算功能 样式请无视
都说vue的双向数据绑定好用,自己用了下,感觉做购物车没想象中好用.自己的实现如下: <!DOCTYPE html> <html lang="en"> &l ...
- 「C语言」在Windows平台搭建C语言开发环境的多种方式
新接触C语言,如何在Windows下进行C语言开发环境的搭建值得思考并整理. 以下多种开发方式择一即可(DEV C++无须环境准备). 注:本文知识来源于 Windows 平台搭建C语言集成开发环境 ...
- node 环境下简单web服务器搭建代码
零.前置 已经安装 node 环境. 一.代码片段 var http = require('http'); var path = require('path'); var fs = require(' ...
- 一次生产环境下MongoDB备份还原数据
最近开发一个版本的功能当中用到了MongoDB分页,懒于造数据,于是就研究了下从生产环境上导出数据到本地来进行测试. 研究了一下,发现MongoDB的备份还原和MySQL语法还挺类似,下面请看详细介绍 ...
- node环境下安装vue-cli
一. node安装 1)如果不确定自己是否安装了node,可以在命令行工具内执行: node -v (检查一下 版本): 2)如果 执行结果显示: xx 不是内部命令,说明你还没有安装node , ...
- windows环境下使用MySQL导入数据乱码报错的解决办法
Linux及Mac系统下使用source xxx.sql 可直接导入测试数据(注意必须先切换到当前xxx.sql的目录下), 但在Windows环境下导入会出现乱码报错的情况, 主要是因为编码的问题, ...
- ie浏览器下get方式获取数据无效问题
在ie浏览器用get方式获取数据时因为发送得到参数地址都是一样的,所以浏览器会优先从缓存获取数据,而不去服务器请求数据,post由于参数不同所以不会影响. 解决方法: 1. Internet选项-- ...
随机推荐
- Ubuntu18.04 卸载mysql5.7
查看MySQL的依赖项:dpkg --list|grep mysql 要删除上面的这些. 开始卸载: sudo apt-get autoremove --purge mysql-server sudo ...
- Pro Micro
选择这块Arduino板主要是因为它便宜(淘宝上20元左右搞定),引脚相对较多,体积小,而且其使用的处理器核心ATmega32U4(兼容Arduino Leonardo)可用于模拟HID设备,可以配合 ...
- vmalloc/vfree问题思考记录
arm 32 用户进程陷入内核态通过vmalloc/vfree分配内存的流程 内核在更新非连续内存区对应的页表项是非常懒惰的.--<深入理解linux内核> arm 32 只有一个PGD ...
- Shape.Type属性名称及对应值列表
在Excel工作表中,有多种Shape类型的时候,可以通过shape.Type属性值返回一个代表形状类型的MsoShapeType数值.通过该数值可知该图形的类型! 列表如下: 名称 值 说明 mso ...
- ABP之Logging
服务器端 ABP使用Castle Windsor的日志设施.它可以使用不同的日志库:Log4Net.NLog.Serilog等等.Castle为所有日志程序库提供了一个公共接口,这样,我们可以独立的使 ...
- C# Serialization performance in System.Runtime.Serialization.Formatters.Binary.BinaryFormatter,Newtonsoft.Json.JsonConvert and System.Text.Json.JsonSerializer.Serialize
In .net core 3.0 using System;using System.Collections.Generic;using System.Collections;using System ...
- goweb-http协议
先链接到一个我的另一篇有关HTTP的博客 第一次访问时会有些慢~~~ http协议 因为编写 Web 应用必须对 HTTP 有所了解,所以我们对 HTTP 进行介绍 HTTP 协议简介 HTTP 超文 ...
- PlayJava Day013
今日所学: /* 2019.08.19开始学习,此为补档. */ 1.BufferedImage:是Image的一个子类,两者的主要作用就是将一副图片加载到内存中,即图像缓冲区. 对于本地图片: Fi ...
- iOS----------iPhone导出手机所有短信
第一步:手机连接到itunes 选择本电脑备份 备份的时候不要加密 然后立即备份 第二步:前往文件夹,找到itunes的备份路径~/Library/Application Support/Mo ...
- requests---requests请求表单
在做接口测试的时候我们会遇到过需要填写表单的形式,那么如何通过requests进行请求呢? 这里需要引入新的python的第3方库requests-toolbelt requests-toolbelt ...