我有一个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;
}
答案 0 :(得分:0)
您似乎没有使用PUT
发送任何数据,因为服务器会回复您的身体不能为null
的消息。
由于您是代理人,请尝试通过API将原始请求传递给响应,如https://github.com/mikeal/request#streaming
req.pipe($request(apiUrl + req.url)).pipe(res)