Node的http模块

发布于:2023-01-19 ⋅ 阅读:(379) ⋅ 点赞:(0)

发送网络请求

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));
})
本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到