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

Jillian ·
更新时间:2024-11-11
· 578 次阅读

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) })



get node环境 node

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章