backbone.js 使用expressjs发布到远程url

u0sqgete  于 2022-11-10  发布在  其他
关注(0)|答案(3)|浏览(135)

我有这个在我的server.js

app.post("/leadAPI/ed",function(request,response){
//api post code here
});

在这个post请求中,我需要将请求主体中包含的数据发布到某个具有特定URL的外部API,然后使用response.send将响应发送回来。如何以一种干净的方式完成此操作?expressjs中是否有内置的内容?

jmp7cifd

jmp7cifd1#

正如Andreas提到的,这不是express的职责,它的职责是在HTTP请求到来时调用您的函数。
您可以使用node的内置HTTP客户端(正如Andreas在注解中提到的)向外部站点发出请求。
请尝试以下操作:

var http = require('http');

app.post("/leadAPI/ed", function(request, response) {
  var proxyRequest = http.request({
      host: 'remote.site.com',
      port: 80,
      method: 'POST',
      path: '/endpoint/url'
    },
    function (proxyResponse) {
      proxyResponse.on('data', function (chunk) {
        response.send(chunk);
      });
    });

  proxyRequest.write(response.body);
  proxyRequest.end();
});

我相信您需要修改它来处理分块的响应,并找出传输编码,但这就是您所需要的要点。
如需详细信息,请参阅
http://nodejs.org/api/http.html

6tr1vspr

6tr1vspr2#

我将使用Mikeal Rogers的request库:

var request = require('request');

app.post("/leadAPI/ed",function(req, res){
  var remote = request('remote url');

  req.pipe(remote);
  remote.pipe(res);
});
kh212irz

kh212irz3#

你可以这样做。

var request = require('request');
var url = "<remote url>"
app.post("/leadAPI/ed",function(request, response){
  request.get({url:url, headers:request.headers, body:request.body}, function (err, res, body) {
    if(!err) {
      response.status(200).send(res) // JSON.stringify(res) if res is in json
    }
  })
})

请记住,两者的content-type应该相同。

相关问题