var http = require('http'), https = require('https'), Q = require('Q'); var util = { /** * HOW TO Make an HTTP Call - GET * * options for GET * var optionsget = { * hostname : 'api.t.sina.com.cn', * path : '//provinces.json' // the rest of the url with parameters if needed * }; */ get : function(optionsget){ return this.request(optionsget,'GET',null,false); }, post : function(optionspost,jsonObject){ return this.request(optionspost,'POST',jsonObject,false); }, /** * HOW TO Make an HTTPs Call - GET * * options for GET * var optionsget = { * hostname : 'graph.facebook.com', * path : '/youscada' // the rest of the url with parameters if needed * }; */ secureGet : function(optionsget){ return this.request(optionsget,'GET',null,true); }, /** * HOW TO Make an HTTPs Call - POST * * options for POST * var optionspost = { * hostname : 'graph.facebook.com', * path : '/youscada/feed?access_token=your_api_key' * }; */ securePost : function(optionspost,jsonObject){ return this.request(optionspost,'POST',jsonObject,true); }, /** * var options = { * hostname : 'graph.facebook.com', * path : '/youscada/feed?access_token=your_api_key' * } */ request : function(options,method,jsonObject,isSecure){ if(!(options && options.hostname && options.path)){ throw new Error('Omit property : "hostname" or "path".'); } options.method = method || 'GET'; options.port = options.port || 80; if(Object.prototype.toString.call(jsonObject) === '[object Object]'){ jsonObject = JSON.stringify(jsonObject); var postheaders = { 'Content-Type' : 'application/json', 'Content-Length' : Buffer.byteLength(jsonObject, 'utf8') }; options.headers = postheaders; } var protocal = http; if(isSecure){ options.port = 443; protocal = https; } var deferred = Q.defer(); var body = ""; // do the POST call var request = protocal.request(options, function(res) { res.on('data', function(trunk) { body += trunk; }).on('end',function(){ deferred.resolve(body); }).on('errer',function(err){ deferred.reject(err); }); }); // write the json data if(options.method === 'POST'){ request.write(jsonObject); } request.end(); request.on('error', function(e) { deferred.reject(e); }); return deferred.promise; } }; module.exports = util;
…… router.get('/rest', function(req, res,next) { var promise = restUtil.get({ hostname : "api.t.sina.com.cn", path : "/provinces.json" }); promise.then(function(data){ res.send(data); },function(err){ next(err); }); }); ……
相关推荐
在Node.js项目中,可以使用内置的http模块或第三方库(如axios或request)来设置请求头,添加必要的认证信息。 2. **API调用**:JIRA REST API提供了丰富的资源路径,如获取用户信息、创建问题、更新问题状态等。在...
然而,对于更复杂的任务,如处理cookies、管理连接池或支持HTTPS,开发者通常会使用第三方库,如Apache HttpClient或OkHttp。这些库提供了更高级的功能,使API调用更加便捷。 2. **Node.js HTTP服务器**: 在Node....
在Node.js中,我们可以使用内置的http模块或者第三方库如axios或request来发起REST API调用。 4. **调用API**: 调用API的基本步骤包括:构造请求URL、设置请求头(headers)、定义请求方法(GET、POST等)、可能...
对于这些坐标系统之间的转换,有多种方法可以实现,比如使用数学公式直接计算或者调用第三方库。在Node.js环境中,可以利用如`proj4js`这样的库来处理坐标转换。此外,RESTful API的使用意味着我们可以构建一个Web...
7. **支付集成**:可能包含第三方支付接口的集成,如支付宝、微信支付等。 8. **错误处理**:良好的错误处理机制,确保服务的稳定性。 9. **性能优化**:缓存策略、数据库连接池、异步操作优化等提升系统性能的方法...
Node.js的`try...catch`语句和第三方模块如`winston`可以帮助我们实现这一目标。 7. **性能优化**:考虑到手机资源有限,服务器需要优化响应速度,减少不必要的计算和数据传输。可以利用缓存策略、压缩响应内容、...
简介 1、包含Rest-ful、...方便对第三方的C++调用及分离计算密集型业务 5、用神经网络实现一个关于分类的计算与预测简易模型一,目录结构|____README.md # 项目说明文件|____app.js # 入口文件|____Dockerfile
"marvel-backend: Marvel API Explorer 后端"项目是一个基于Node.js、Express.js构建的后端服务,专门用于探索和利用...通过这个项目,你可以深入了解如何构建一个高效、健壮的API服务,并且熟悉与第三方API的集成。
4、用C++编写Node扩展库,方便对第三方的C++调用及分离计算密集型业务 5、采用Docker方式部署,Git-ci自动测试发布、Gulp集成开发,Mocha单元测试 一,项目目录结构 |____README.md # 项目说明文件 |____app.js # ...