怎么在nodejs服务里面调用外部接口,get和post方式

2018年1月22日 

欢迎来到的Altaba的博客

众所周知node是打破前端壁垒最快捷的途径,项目开发中需要写一个nodejs+express+mongodb记录浏览网页的信息,但是由于公司前期未计划到这步,所以有些数据需要调用后端同事的api把一些MongoDB数据实时传入后台,故我这边nodejs中要不定时的做ajax请求调用外部的api(非nodejs API),实现如下:

利用nodejs固有的“http”模块中request()方法

//对比联系人创建时间和当前时间差在两分钟内
let screenLandContacts = function (data) {
    //let now = new Date();
    let newData = [];
    let preTime = new Date().getTime();
    data.forEach((item)=> {
        // console.log(item.createtime);
        // console.log(preTime);
        let initTime = preTime - item.createtime;
        // console.log(initTime);
        if(initTime < 120000){
            newData.push({
                skey:item.skey,
                contact_info:item.contact_info
            })
        }
    });

    return newData;

}



//获取所有登录的联系人信息
let searchLandContacts = function () {
    contactDB.findAll().then((data)=> {
        let newData = screenLandContacts(data);
        //let newDataL = JSON.stringify(newData);

        // let postData = querystring.stringify({
        //     'contacts' : newData ? newData : '[]'
        // });
        let postData = {
            contacts : JSON.stringify(newData)
        };


        let options = {
            hostname: 'rest_t.soup.ai',
            //port: 80,
            path: '/contact/online',
            method: 'POST',
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded',
                'Content-Length': Buffer.byteLength(formatParams2(postData))
            }
        };

        let req = nodeHttp.request(options, (res) => {
            //console.log(`STATUS: ${res.statusCode}`);
            //console.log(`HEADERS: ${JSON.stringify(res.headers)}`);
            res.setEncoding('utf8');
            res.on('data', (chunk) => {
                console.log(`BODY: ${chunk}`);
            });
            res.on('end', () => {
                console.log('No more data in response.');
            });
        });

        req.on('error', (e) => {
            console.log(`problem with request: ${e.message}`);
        });

        // write data to request body
        console.log(postData);
        //格式化参数
        req.write(formatParams2(postData));
        req.end();
    }, (err)=> {
        dbLog.error('find contact error: ' + err);
    });
};

//循环发送
let sendWsMessage = function () {
    setInterval(function () {
        searchLandContacts();
    },15000)
};

sendWsMessage();


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值