`

NodeJS调用第三方RestAPI的实现

 
阅读更多
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);
    });
});

……

 

分享到:
评论

相关推荐

    nodejs调用.net webapi

    要实现Node.js调用.NET WebAPI,首先你需要安装Edge.js库,这可以通过npm(Node.js包管理器)来完成: ```bash npm install edge ``` 然后,在Node.js中引入Edge.js,并定义一个函数来执行.NET的代码,例如,调用Web...

    nodejs+websock+rest+rest调用

    基于nodejs的websocket平台,该平台包括异步的数据库调用,异步的rest api访问,以及能够提供rest api的服务。该平台能实现基于ws的聊天室,可以将聊天的信息调用rest api存储到数据库,可以通过网页访问该平台提供...

    nodejs调用C++代码

    标题"nodejs调用C++代码"指的就是这种技术,它允许我们利用Node.js的便捷性和C++的高性能。Node.js提供了一个名为`N-API`(Node.js API)的接口,它是跨平台的,可以用来创建原生模块,这些模块可以包含C++代码,...

    nodejs调用建行互联网银企被扫支付接口加密及验签Demo+java封装jar包

    nodejs调用java可以通过child_process模块中的spawn()函数实现。 var spawn = require('child_process').spawn;  nodejsJava.encryptccbParam=function(flag,param,pubKey,callback){//必须传入4个参数}  

    nodejs调用cmd命令实现复制目录

    Node.js本身提供了丰富的API来处理文件和目录,但在某些情况下,调用系统命令可能会更为直接和高效。 知识点一:Node.js的child_process模块 Node.js的child_process模块允许开发者执行外部命令。这个模块提供了...

    Node-FSAPI, 用于NodeJS的rest式 文件系统 API.zip

    Node-FSAPI, 用于NodeJS的rest式 文件系统 API node 文件系统 APInode fsapi为与远程文件系统交互提供了一个rest式( CRUD ) 服务器。 它依靠( 读取) 。POST ( 创建) 。( 更新) 和使用纯语言语法删除( 删除) 命令。...

    todoAPIjs, NodeJS,ExpressJS和 MongoDB rest式API教程.zip

    todoAPIjs, NodeJS,ExpressJS和 MongoDB rest式API教程 待办事项Angular,NodeJS,ExpressJS和 MongoDB rest式API教程。 请参见创建一个rest式API教程以获得更详细的信息。安装你只需要安装依赖项:npm install然后...

    通过nodejs 调用 海泰方圆的usbkey 接口

    通过nodejs 调用 海泰方圆的usbkey 接口,需要完整代码和我联系40744069@qq.com

    plotly-nodejs, Plotly和 REST api流的node.js 包装器.zip

    plotly-nodejs, Plotly和 REST api流的node.js 包装器 Plotly node API 分析和可视化数据,一起流 plot-示例模拟传感器流数学酒吧安装npm install plotly用法var plotly = require('plotly')

    nodejs调用快递查询接口源码

    快递查询接口通常由第三方服务提供商提供,如“快递鸟”,它聚合了各大快递公司的数据,提供统一的API供开发者使用。你需要拥有一个有效的快递鸟ID,这是调用接口的凭证。 3. **API调用**: 在`index.js`中,你会...

    carouselApi:使用 NodeJS 提供轮播服务的 Rest API

    旋转木马API 使用 NodeJS 提供轮播服务的 Rest API 版本:1.0.0安装 npm install发展运行应用服务器并开始开发 npm run serve环境 localhost:8080API 指南端点列表 localhost:8080/apiDocs方法小路有效载荷描述GET /...

    nodejs-sqlite-restapi-app

    nodejs-sqlite-restapi-app 关于应用程序 此应用程序是关于对自行车进行CRUD操作。 先决条件 节点js (可选) 设置 克隆存储库。 git clone ...

    restapi-nodejs-mysql:Una Rest API构造NodeJS和MySQL

    通过以上组件的组合,"restapi-nodejs-mysql"项目提供了一个完整的REST API解决方案,使得前端开发者可以方便地调用API获取数据,而无需关心后端的实现细节。同时,这样的架构也便于扩展和维护,对于初学者和经验...

    基本情况 在一个项目开发过程中,遇到了小票自动打印的业务需求,原本计划使用NodeJS构建打印服务,调用本地电脑打印机进行数据打

    基本情况 在一个项目开发过程中,遇到了小票自动打印的业务需求,原本计划使用NodeJS构建打印服务,调用本地电脑打印机进行数据打印,最后可参考资料偏少,由于项目紧急且对NodeJS的熟悉程度目前也还不够,所以转而...

    NodeJS调用JShaman接口加密JS代码

    在NodeJS中调用JShaman接口实现JS代码加密,通常涉及到几个步骤,包括安装调用所需的模块、配置加密选项、发送加密请求、接收加密结果以及将加密后的代码集成到应用中。 NodeJS开发者首先需要安装能够支持HTTP请求...

    Node.js-PureImage是用于NodeJS的HTMLCanvas2d绘图API的纯JavaScript实现

    PureImage 是用于NodeJS的HTML Canvas 2d绘图API的纯JavaScript实现

    nodejs调用textra webapi使用机器翻译的demo

    Node.js实现调用Textra Web API进行机器翻译的示例程序主要涉及以下几个核心知识点: 1. Textra Web API概述 Textra是由日本国家语言研究所(NICT)开发的机器翻译系统,旨在提供高质量的翻译服务。该系统支持多种...

    api-client-nodejs:BizMetrics.io REST API - NodeJS 库

    BizMetrics.io API NodeJS ...BizMetrics.io REST API - NodeJS 库 目前,这是在其 1.2 版本上使用生成的代码。 它不能保证工作,但它应该为使用 BizMetrics 的 API 提供一个很好的起点。 欢迎和鼓励贡献和改进。

    JavaScript_ChatGPT和Bing AI的客户端实现Nodejs REST API和CL

    JavaScript_ChatGPT和Bing AI的客户端实现,可作为Nodejs模块REST API服务器和CLI应用.zip

Global site tag (gtag.js) - Google Analytics