-
GET 请求:
get数据发送的时候都是在
url
中的,req.url,req表示请求的内容对象,里面包括了很多请求相关的信息。// 方法一:手动切 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;} // 写入后取到的内容 res.write(GET); //结束响应 res.end(); }).listen(8080); // 方法二:使用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(GET); res.write(GET); res.end(); }).listen(8080); // 方法三:使用url模块 const http = require('http') ; const urlLib = require('url') ; var GET={}; http.createServer(function(req,res){ var obj=urlLib.parse(req.url,true); var url=obj.pathname; var GET=obj.query; console.log(url,GET); res.write(GET); res.end(); }).listen(8080);
GET数据的解析方式:req.url----->urlLib.parse(url,true);
-
POST 请求:
与GET数据相比,POST数据量大,得分段;
req.on ( ‘data’ , function(data) { } )监听当有一段数据到达的时候,回调函数参数data为每段达到的数据。
req.on ( ‘end’ , function() { } )数据全部到达
var http=require('http'); var querystring=require('querystring'); http.createServer(function(req,res){ var str=''; var i=0; req.on('data',function(data){ console.log(`第${++i}次收到数据`); str+=data; });//当有一段数据到达的时候 req.on('end',function(){ var POST=querystring.parse(str); console.log(POST); });//数据全部到达 }).listen(8080);
-
GET 与 POST 区别:
- get 传值通过 url 传递(明文), post 通过请求体(querystring)传递值的;
- get 传递数据参数长度不能大于 2048个字符,post 传递数据相对较大;
- get 传值的安全性低于post;
- get 一般用于请求数据/获取数据,post 一般用于提交数据;
结语:
不经一番寒彻骨,怎得梅花扑鼻香。