发送网络请求
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));
})