我有点新的NodeJS,和目前我用快递和请求(https://github.com/request/request)转发我的应用程序请求REST API服务器,如下图所示目前我的代码:如何更改请求的NodeJS响应流
app.use('/rest/*', function(req, res) {
req.pipe(request('http://ipaddress/api')).pipe(res);
});
此代码在REST API服务器正常工作时起作用,但如果其余api服务器发生故障,我的nodejs应用程序也会关闭,因为请求流将失败并且错误不会被我的应用程序捕获。 我查请求GitHub的页面,它提供了处理流错误的一种方式,像
app.use('/rest/*', function(req, res) {
req.pipe(request('http://ipaddress/api').on('error', function(err) {
console.log(err);
})).pipe(res);
});
这只能记录错误和防止我的NodeJS应用程序崩溃,但我想改变的响应时发生错误,以便为改变反应可通过管道输送到最后一个,例如,我想在伪做什么:
app.use('/rest/*', function(req, res) {
req.pipe(request('http://ipaddress/api').on('error', function(err) {
console.log(err);
// what I want to do in pseudocode
response.statusCode = 500;
response.json = {
reason: err.errno
};
})).pipe(res);
});
有没有解决我的问题的任何方式?感谢您的任何想法!
这也许是不可能的,只有一个请求,因为头部已经被错误是可能发生的时间发送。相反,你应该做的是从节点服务器向api服务器发出一个HEAD请求,以检查它是否在线,然后如果出现这种情况,请将API请求传送给客户端。否则,你可以发送你想要的任何响应给客户端。 –