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来解析;文件读取:可读文件都在www的文件夹,所以路径需要拼接下

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值