如何向前传播"一个post()req到另一个api,得到res并发回去?

时间:2017-03-23 09:32:44

标签: node.js express facebook-graph-api middleware

背景: 我正在使用构建一个使用2个不同的第三方来做某事的系统。 第三方#1 - 是facebook messenger app,需要webhook通过POST()协议连接和发送信息。 第三方#2 - 是我用来构建机器人的平台(称为GUPSHUP)。

我的服务器位于它们之间 - 所以,我需要将facebook messenger应用程序挂钩到我的服务器上的端点(已经做过),因此Facebook应用程序获得的每条消息都会发送到MY服务器

现在,我真正需要的是,我的服务器充当"中间件"并简单地发送" req"和" res"它进入另一个平台网址(让我们称之为GUPSHUP-URL),获取资源并将其发送到Facebook应用程序。

我不知道如何编写像这样的中间件。 我的服务器帖子功能是:



    app.post('/webhook', function (req, res) {
/* send to the GUPSHUP-URL , the req,res which I got ,
   and get the update(?) req and also res so I can pass them
   back like this (I think) 
   req = GUPSHUP-URL.req
   res = GUPSHUP-URL.res
   
*/

});




1 个答案:

答案 0 :(得分:1)

是的,您可以使用请求模块

在另一台服务器上传递do请求
var request = require('request');

app.post('/webhook', function (req, res) {
    /* send to the GUPSHUP-URL , the req,res which I got ,
       and get the update(?) req and also res so I can pass them
       back like this (I think) 
       req = GUPSHUP-URL.req
       res = GUPSHUP-URL.res

       */

       request('GUPSHUP-URL', function (error, response, body) {
        if(error){

             console.log('error:', error); // Print the error if one occurred 
             return res.status(400).send(error)
           }
            console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received 

              console.log('body:', body); // Print the HTML for the Google homepage. 
              return res.status(200).send(body); //Return to client
            });

     });

第二版

var request = require('request');


//use callback function to pass uper post
function requestToGUPSHUP(url,callback){

 request(url, function (error, response, body) {

  return callback(error, response, body);
}

app.post('/webhook', function (req, res) {
    /* send to the GUPSHUP-URL , the req,res which I got ,
       and get the update(?) req and also res so I can pass them
       back like this (I think) 
       req = GUPSHUP-URL.req
       res = GUPSHUP-URL.res

       */

       requestToGUPSHUP('GUPSHUP-URL',function (error, response, body) {

        if(error){

          return res.status(400).send(error)
        }

          //do whatever you want


          return res.status(200).send(body); //Return to client
        });


     });

更多信息Request module