2、http.ClientRequest客户端
该对象通过http.request()或http.get()方法创建,可以作为一个向服务器发起请求的客户端,该对象的属性(只列出部分)如下:

http.request(options[, callback])方法使用
参数options可以是一个对象或字符串,如果是字符串则会自动调用url.parse()进行解析,包涵以下属性(部分):
protocol,协议,默认为http:
host,主机地址
hostname,主机名
family,IP版本
port,端口
method,请求方法
path ,路径
headers ,请求头
timeout ,超时时间
callback会自动添加给reponse事件监听,返回值为http.ClientRequest,下面利用该知识写一个利用支付宝接口查询银行卡号所属银行,不过http换成了https,接口一致,代码如下:
const https = require('https');
const banknames = require('./bankname.js');
const btypes = {
DC: '借记卡',
CC: '信用卡'
};
var baseUrl = 'https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?_input_charset=utf-8&cardBinCheck=true&cardNo=';
var cardNo = process.argv.slice(2)[0];if (!/^d{16,}$/.test(cardNo)) {
console.log(`参数错误,请输入16位以上银行卡号。例如:node http-get.js 6228430120000000000`);
process.exit(0);
}
baseUrl = baseUrl + cardNo;
const client = https.get(baseUrl, (res) => {
const status = res.statusCode;
const type = res.headers['content-type'];
let msg = '';
let data = '';
if (status !== 200) {
msg = '发送请求失败 code:' + statusCode;
} else if (!/^application/json/.test(type)) {
msg = '返回的数据格式不正确,应返回JSON';
}
if (msg != '') {
console.log(msg);
process.exit(0);
}
res.setEncoding('utf8');
res.on('data', (chunk) => {
data += chunk;
});
res.on('end', () => {
try {
let bankObj = JSON.parse(data);
dealBankObj(bankObj);
} catch (e) {
console.log(e.message);
}
});
});
client.on('error', (err) => {
console.log(err.message);
});
function dealBankObj(obj) {
const bname = banknames[obj['bank']];
const btype = obj['cardType'];
const cardId = obj['key'];
console.log(`卡号:${cardNo}rn银行:${bname}rn类型:${btypes[btype]}`);
}
bankname.js
const banknames = {
"SRCB": "深圳农村商业银行",
"BGB": "广西北部湾银行",
"SHRCB": "上海农村商业银行",
"BJBANK": "北京银行",
"WHCCB": "威海市商业银行",









