首页 > 代码库 > nodejs使用request和bluebird编写的http请求模块
nodejs使用request和bluebird编写的http请求模块
var request = require("request");var promise = require("bluebird");//使用bluebird将request库的所有异步方法编译成promise形式,会自动加上Async后缀request = promise.promisifyAll(request);var curl = (function () { function curl() { } /** * 输入一个url和需要post的数据(如果需要post),然后返回最终访问到的结果. * * @author jie * @date 2015/2/5 * @param string url 需要访问的url. * @param string postData 访问时,需要post过去的数据. * @return promise * */ curl.visitAsync = function (url, postData) { if (postData =http://www.mamicode.com/== void 0) { postData = http://www.mamicode.com/""; } try { //request.debug = true;//详细打印请求报告 var res; url = url.trim(); //为没有http开头的url添加http头,必须添加 if (!url.match(/^http./)) { { url = "http://" + url; } } //默认超时时间timeout为20秒,无须设置 var options = { url: url, form: "" }; if (postData) { //使用request库中的form来保存post数据,这样访问的content-type会变成application/x-www-form-urlencoded options.form = postData; //post数据 res = request.postAsync(options); //返回代执行的promise函数 } else{ res = request.getAsync(options); } //返回代执行的promise函数 return res.spread(function (res, body) { return body; }); } catch (ex) { throw ex; }}; //visitAsync return curl;})();module.exports = curl;使用:test.jsimport curl = require(".curl");var tsk = curl.visitAsync("http://www.baidu.com");tsk.then(body => { console.log(body);})看到bluebird库的api有catch()可以捕抓抛出的错误,不知道直接使用try-catch有没有作用呢~~~~~~~~
https://www.npmjs.com/package/bluebird
nodejs使用request和bluebird编写的http请求模块
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。