2016-02-20 29 views
8

I have api che restituisce 400 o 404 errori in caso di errore.catch api 404 response with Angular2 http

Quando si esegue il metodo http.get, non rileva l'errore su subscribe e genera un errore.

Http.get(`api/path/here`).map(res => res.json()).subscribe(
      data => console.log(data), 
      error => console.log(error) 
     ); 

seguito è l'errore che ottengo

enter image description here

+0

dare un'occhiata nella scheda '' network' per lo stato Codice delle e nella scheda di anteprima per informazioni di errore codice di stato –

+0

@PardeepJain è 400 che cosa è l'API ritorna, se l'oggetto utente non viene trovato. – Basit

risposta

6
.subscribe(res=>{ 
    this.data=res; 
    console.log('bye'); 
}, 
(err)=>console.log(err), 
()=>console.log("Done") 
); 

Prova questo modo.

11

Si potrebbe anche usare l'operatore di catch

http.get(`api/path/here`) 
    .map(res => res.json()) 
    .catch(
     err => { 
      // handle errors 
     }) 
    .subscribe(
     data => console.log(data) 
    ); 
+1

Il "catch" ha qualche vantaggio sull'utilizzo del metodo "onError" sull'operatore stesso? Se includo semplicemente un'implementazione del metodo "onError", c'è una possibilità che io possa avere eccezioni non rilevate probabilmente causate dal mio operatore "map"? Grazie! – slashp