如何在node環境實現“get資料解析”程式碼例項
阿新 • • 發佈:2020-07-06
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,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) })
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。