Nodejs
提供http
模块,用于创建web
服务的模块,创建一个web
服务器。同时我们也可以通过使用http
模块用于实现客服端请求网络服务。本文主要是介绍如何使用http
模块实现客户端,封装使用get、post方法。
1、封装get方法
const http = require('http');
function get(url) {
return new Promise((resolve, reject) => {
const req = http.get(url, res => {
let result = '';
res.on('data', data => {
result += data;
});
res.on('end', () => {
console.log('客户端接收到的响应:', result)
resolve(JSON.parse(result));
})
});
req.setTimeout(60 * 1000, () => {
console.log('请求超时');
reject();
})
req.on('error', error => {
reject(error);
});
})
}
// 使用
get("http://tool.enjoytoday.cn/api/ip-json/144.100.88.23?lang=zh-CN");
2、创建post请求
const http = require('http');
function post(hostname, path, postData) {
return new Promise((resolve, reject) => {
const options = {
hostname,
path,
method: 'POST',
headers: {
'Content-Type': 'text/plain'
},
};
const req = http.request(options, res => {
res.setEncoding('utf8');
res.on('data', (chunk) => {
console.log(`BODY: ${chunk}`);
resolve(chunk);
});
res.on('end', () => {
console.log('No more data in response.');
reject()
});
});
req.setTimeout(60 * 1000, () => {
console.log('请求超时');
reject();
})
req.on('error', (e) => {
reject(e);
});
req.write(postData);
req.end();
})
}
// 使用
post("data.zz.baidu.com", `/urls?site=${baidu.domain}&token=${baidu.token}`, links.join('\n')).then(res => {
console.log('提交url成功:', res);
})
除此之外,在nodejs
中我们也可以使用axios
模块进行网络请求,其用法和浏览器端基本一致,