http 数据解析

一,数据请求

前台->form/ajax/jsonp

后台->一样

二,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];
		//arr[0]=>'/aaa'
		//arr[1]=>'userName=wangni&userPassword=iop'
		var arr2 = arr[1].split('&');
		//arr2[0]=>'userName=wangni'
		//arr2[1]=>'userPassword=iop'
		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(8090);

(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];
		//arr[0]=>'/aaa'
		//arr[1]=>'userName=wangni&userPassword=iop'
		get = querystring.parse(arr[1]);
	}else{
		var url = req.url;
	}
	console.log(url,get);
	res.write('aaa');
	res.end();
}).listen(8090);

(3)url(解析地址、数据)

url.parse('请求地址',true);true将数据中的query解析为json格式

const http = require('http');
const myURL = require('url');
var url,get = {};
http.createServer(function(req,res){
	var obj = myURL.parse(req.url,true);
	url = obj.pathname;
	get = obj.query
	console.log(url,get);
	res.write('aaa');
	res.end();
}).listen(8090);

三,POST请求

post数据接收:post数据比get数据大很多,所以分段发送

(这里接收数据用querystring,不用url)

const http = require('http');

http.createServer(function(req,res){

	var i = 0,str = '';
	//data=>有一段数据到达(很多次)
	req.on('data',function(data){
		console.log(`第${i++}次发送数据`)//es6里面的写法
		str+=data;
	});
	//end=>数据发送完毕(一次)
	req.on('end',function(){
		//console.log(str)
	});



}).listen(8090);

四,总结

***post请求使用querystring来解析;get请求使用url来解析;

const http = require('http');
const fs = require('fs');
const querystring = require('querystring');
const urlLi = require('url');

http.createServer(function(req,res){
//get
	var obj = urlLi.parse(req.url,true);
	var url = obj.pathname;
	const get = obj.query;

//post
	var str = '';
	req.on('data',function(data){
		str += data;
	});

	req.on('end',function(){
		const post = querystring.parse(str);
		console.log(url,get,post);
	});

//文件读取
	var fileName = './www'+url;
	fs.readFile(fileName,function(err,data){
		if(err){
			res.write('404');
		}else{
			res.write(data)
		}
		res.end();
	});

}).listen(8090);

猜你喜欢

转载自blog.csdn.net/qq_33828155/article/details/80923478