Node的http模块

发送网络请求

get请求

const http = require("http);
let req = http.request("url",(res)=>{
	res.on("data",(data)=>{
		console.log(data.toString())
	})
});
req.on("error",(err)=>{ // 监听error事件,进行异常处理
	console.log(err); 
})
req.end();

post请求

const http = require("http);
let req = http.request("url",{
	method:"post",
	headers:{
		"Content-Type": 'application/x-www-form-urlencoded'
	}
},(res)=>{
	res.on("data",(data)=>{
		console.log(data.toString())
	})
});
req.on("error",(err)=>{ // 监听error事件,进行异常处理
	console.log(err); 
})
req.write(JSON.parse({});// 要传递的参数
req.end();

发送psot必须设置请求头
必须使用req.end()结束请求
有时候返回的数据是gzip格式的文件,可以通过查看res.header中的content-encoding属性查看,如果是gzip使用zlib进行解压。

解压gzip格式的文件

const zlib = require("zlib");
// 异步解压方法
zlib.gunzip(data, (err,result)=>{
	console.log(result.toString());
});
// 同步解压方法
console.log(zlib.gunzipSync(data).toString());

使用http创建本地服务器

const http = require("http");
const server = http.createServer();
//监听请求事件,浏览器发送请求时会触发该事件
server.on("request",(req,res)==>{
	res.write(data);//将相应的数据写入请求体中
	res.end();//结束请求
	//也可以直接使用res.end()返回请求数据
	//res.end(data)
})
server.listen(3000): //监听端口号

也可以根据不同的请求路径响应不同的数据

server.on("request",(req,res)==>{
	//req是请求对象,包含发送请求时携带的一些信息
	if(req.url === "/index"){
		res.end(data);//结束请求
	}else if(req.url === "/login"){
		res.end(data);
	}

获取get请求路径中的参数

将请求的路径作为参数生成url对象,通过searchParams属性获取请求的参数

let myUrl = new URL(req.headers.host+req.url);
console.log(myUrl.searchParams); // 返回路径解析后的对象

在这里插入图片描述

url模块的parse()是旧版API,官方不推荐使用

获取post请求参数

const querystring = require("querystring");
let data = "";
req.on("data",(chunk)=>{
	data+=chunk;
})
req.on("end",()==>{
	console.log(querystring.parse(data));
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端御书房

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值