Ich bin etwas Neues zu NodeJS, und den Strom I verwendete Express und Request (https://github.com/request/request) meine App Anfrage weiterleiten REST-API-Server, Strom meines Code unten ändern:Wie NodeJS Anfrage Stream-Antwort
app.use('/rest/*', function(req, res) {
req.pipe(request('http://ipaddress/api')).pipe(res);
});
Dieser Code funktioniert, wenn der REST-API-Server in Ordnung ist, aber wenn der Rest-API-Server ausfällt, geht meine Nodejs-App ebenfalls aus, weil der Anforderungsstream fehlschlägt und der Fehler nicht von meiner App abgefangen wird. überprüfte ich die Anfrage Github Seite, in einer anderen liefert den Strom Fehler zu behandeln, wie
app.use('/rest/*', function(req, res) {
req.pipe(request('http://ipaddress/api').on('error', function(err) {
console.log(err);
})).pipe(res);
});
dies nur den Fehler anmelden und meine NodeJS App abstürzt zu verhindern, aber ich möchte die Antwort ändern, wenn ein Fehler aufgetreten, so dass die geänderte Reaktion kann bis zum endgültigen einem verrohrt werden, zum Beispiel, was ich will in Pseudo-Code tun:
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);
});
gibt es Möglichkeiten, um meine Probleme zu lösen? Danke für irgendwelche Ideen!
, das mit nur einer einzigen Anfrage nicht möglich sein könnte, da die Header bereits von der Zeit gesendet wurden die Fehler wahrscheinlich auftritt. Statt dessen sollten Sie eine HEAD-Anfrage vom Node-Server an den api-Server senden, um zu prüfen, ob sie online ist. Wenn das klappt, gehen Sie voran und leiten Sie die API-Anfrage an den Client weiter. Andernfalls können Sie die gewünschte Antwort an den Client senden. –