nodejs建立http或https請求
阿新 • • 發佈:2018-12-26
createRequest.js
module.exports = function (options = {}) {
options.data = options.data || {};
return new Promise((resolve,reject) => {
const http = require('http');
const https = require('https');
const querystring = require('querystring');
const contents = querystring.stringify(options.data);
options.host = options.host || "localhost";
options.port = options.port || 80;
options.type = options.type || 'http';
options.token = options.token || "";
options.method = options.method || 'GET';
options.path = options.path || "/" ;
if (options.method == "GET") {
options.path = options.path + '?' + contents;
}
options.headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': contents.length,
'Authorization': 'Bearer ' + options.token
};
let _data = '';
if (options.type == 'http') {
const req = http.request(options, function (res) {
res.setEncoding('utf8');
res.on('data', function (chunk) {
_data += chunk;
});
res.on('end', function () {
resolve(_data);
});
res.on('error', function (e) {
console.dir('problem with request: ' + e.message);
});
});
req.write(contents);
req.end();
req.on('error', (err) => {
reject(err)
})
} else {
const req = https.request(options, function (res) {
res.setEncoding('utf8');
res.on('data', function (chunk) {
_data += chunk;
});
res.on('end', function () {
resolve(_data);
});
res.on('error', function (e) {
console.dir('problem with request: ' + e.message);
});
});
req.write(contents);
req.end();
req.on('error', (err) => {
reject(err)
})
}
})
}
test.js
const createRequest = require('./createRequest');
let token;
createRequest({
type:'http',
host:'localhost',
port: 80,
method: 'POST',
path: '/login',
data: {
username: 'your name',
password: 'your password'
}
})
.then(login_data => {
token = JSON.parse(login_data).token;
return createRequest({
host:'localhost',
port: 80,
method: 'GET',
path: '/your path',
token: token,
data: {
}
})
.then(data => {
console.log(data)
})