快速上手 - http 模块 ¶
本文导航
作者:KK
发表日期:2019.09.05
基本示例 ¶
本文演示如何简单地使用http
模块来发起请求,其实跟前面的 它是怎么工作在服务端的 一样是用 http 模块。
let http = require('http');
let options = {
hostname: 'www.kkh86.com', //域名
port: 80, //端口
path: '/it/index.html', //URI 路径
};
//创建请求
let request = http.get(options, (res) => {
let body = ''; //响应内容
res.on('data', (chunk) => {
//接收响应内容的回调,因为当响应内容数据量太大的时候,要分片段接收,所以每接收一个片段都会触发一次这个回调,因此下面有 += 的拼接
body += chunk
});
res.on('end', () => {
//所有内容接收完毕之后
console.log(body);
});
});
request.end(); //发出请求
再来看一个 POST 请求:
let http = require('http'),
queryString = require('querystring');
let postData = {
param1: 'aaa',
param2: 'bbb',
};
let options = {
hostname: 'www.kkh86.com',
port: 80,
path: '/login.do',
method: 'POST',
headers: {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3730.400 QQBrowser/10.5.3805.400',
'X-Requested-With': 'XMLHttpRequest',
}
};
let request = http.request(options, (res) => {
let body = '';
res.on('data', (chunk) => {
body += chunk
});
res.on('end', () => {
console.log(body);
});
});
request.on('error', (e) => {
console.error(`请求遇到问题: ${e.message}`);
});
request.write(queryString.stringify(postData));
request.end();
说明 ¶
你会发现上面代码过程挺啰嗦的,其实它就是把自己定位在一个底层的角色,并不是让我们平时写代码的过程中就这么用的,我们要发 http 请求的话,推荐用axios
这些第三方模块。
发送 https 请求 ¶
把require('http')
换成require('https')
之后就可以了,基本使用是一样的。
使用代理 ¶
在选项里进行以下调整即可:
let options = {
hostname: '127.0.0.1', //代理服务器的地址
port: 8888, //代理服务器的端口
path: 'http://www.kkh86.com/it/index.html', //希望代理帮忙请求的地址
};
具体的代码示例:
let http = require('http');
let options = {
hostname: '127.0.0.1',
port: 8888,
// path: 'http://www.kkh86.com/it/index.html', //http地址当然可以
path: 'https://www.baidu.com/', //https地址也可以
};
let request = http.get(options, (res) => {
let body = '';
res.on('data', (chunk) => {
body += chunk
});
res.on('end', () => {
console.log(body);
});
});
request.end();