Sto sviluppando un front-end che consuma servizi JSON forniti da un server.HTTP angolare2 - Come capire che il server back-end non funziona
Utilizzo felicemente HTTP di Angular2 e posso rilevare errori tramite l'operatore .catch()
.
Se trovo un problema relativo ad un servizio specifico (ad esempio, il servizio non è definita dal server) l'operatore catch()
riceve un Response
con lo stato 404
e posso gestire facilmente la situazione.
D'altra parte, se il server è completamente inattivo, l'operatore catch()
riceve una risposta con codice di stato 200
e nessun segno o testo specifico correlato alla causa del problema (ovvero che l'intero server è giù). Sulla console vedo che l'angolare (http.dev.js) scrive un messaggio net::ERR_CONNECTION_REFUSED
ma non so come fare qualcosa di simile (cioè capire cosa sta succedendo e reagire in modo appropriato) all'interno del mio codice.
Qualsiasi aiuto sarebbe apprezzato.
Hai trovato una soluzione per questo? Vedi anche la mia risposta qui ... –
Se rilevo un errore in un'operazione http (ad es. POST, GET) e lo stato di errore è 200, suppongo che l'intero server sia inattivo, qualcosa come 'private handleError (error: Response) { errore ler; if (error.status == 200) { errorText = 'L'intero server non funziona. La connessione è stata rifiutata. '; } return Observable.throw (errorText || 'Server error'); } '; tutt'altro che sicuro che questo metodo è davvero OK, ma sembra funzionare nei casi che affronto – Picci
Sembra una buona soluzione. Ma dovresti capire che il tuo codice si romperà se risolvono questo problema e tu aggiorni. Pertanto, potrebbe essere una buona idea inserire un 'TODO' ogni volta che si utilizza questa soluzione alternativa. –