使用Node JS和请求包通过代理执行PUT请求

时间:2014-04-25 06:49:51

标签: javascript node.js http rest request

我有一个webapp(使用AngularJS),它运行在我本地计算机上的网络服务器上。我需要使用我的NodeJS服务器执行AJAX REST请求,并将其代理到异地的另一台服务器。使用request包,所有GET请求都可以正常运行。但我的看法是空洞的。

GET请求通过管道传输:

$request.get(apiUrl+req.url).pipe(res);

它运作正常。

我的空PUT请求如下所示:

$request.put(apiUrl+req.url).pipe(req);

我已验证使用Wireshark将PUT请求发送到所需的REST API。不知怎的,我想不出应该如何完成管道。我从REST服务器得到答案,我的身体不能是null

任何线索?我想这很简单,但我认为请求包中的文档并不令人满意。

整个代码在这里,节点服务器检查我们是否正在使用地址/ api

 if(runAsProxy && req.url.indexOf('/api') === 0){
  console.log("this is /api")
  if(req.method ==="PUT"){
     console.log("PUT")
     $request.put(apiUrl+req.url).pipe(res);
     console.log("body: ",req.body)
  }

  else if(req.method === 'GET' || req.method === 'HEAD'){
     $request.get(apiUrl+req.url).pipe(res);

  }
  return;
}

1 个答案:

答案 0 :(得分:0)

您似乎没有使用PUT发送任何数据,因为服务器会回复您的身体不能为null的消息。 由于您是代理人,请尝试通过API将原始请求传递给响应,如https://github.com/mikeal/request#streaming

中所述
req.pipe($request(apiUrl + req.url)).pipe(res)