どのようにnodejsサービスの中で外部インターフェースを呼び出して、getとpost方式ですか?

2660 ワード

2018年1月22日 
いらっしゃいませ、Altabaのブログです.
ご存知のように、nodeはフロントエンドの壁を破る一番早いルートです.プロジェクト開発にはnodejs+express+mongodbでウェブページを閲覧する情報を記録しなければなりません.しかし、会社の前の段階ではこのステップを計画していないので、バックエンドの同僚のapiを呼び出して、いくつかのMongoDBデータをリアルタイムにバックグラウンドに伝えなければなりません.(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();