2016-12-02 2 views
0

Je fais un script pour chercher des données de mon api:Catch() ne gère pas 404

const success = (response) => { 
    console.log(response); 
}; 

const failed = (error) => { 
    console.log(error); 
}; 

axios.$http.get('/somedata') 
    .then((response) => { 
    success(response.data); 
    }) 
    .catch((error) => { 
    failed(error); 
    }); 

/somepage est une page non existante il retourne un 404. Mais le hic est la manipulation pas . Pourquoi pas? Dans ma console, j'ai l'erreur TypeError: Cannot read property 'data' of undefined. Pourquoi n'exécute-t-il pas la fonction failed()? Je ne comprends pas.

+0

double possible de [Promise: alors vs puis + prise] (http://stackoverflow.com/questions/33278280/promise-then-vs-then-catch) – CMedina

+0

quelle version de Axios utilisez-vous? – roger

+0

Dernière version: 0.15.2 – Jordy

Répondre

0

A en juger par le message d'erreur, cela ressemble à "success (response.data);" est appelé. Est-il possible que le serveur renvoie avec succès une page qui indique quelque chose comme "Erreur 404" plutôt que de renvoyer le code de réponse http 404?

+0

Non, il renvoie un code de réponse 404 .. – Jordy

0

a découvert qu'elle était liée à une manipulation intercepteur personnalisée 401 erreurs (mais pas 404 erreurs) ...

+0

Vraisemblablement, vous voulez dire "... un intercepteur personnalisé, qui est conçu pour gérer les erreurs 401 et qui * devrait * rejeter tous les autres ... mais pas "? –

0

Vous pouvez impliment un chèque de 404s.

axios.$http.get('/somedata') 
    .then(response => { 
    if(response.status !== 404) //or any status code really 
     success(response.data); 
    else 
     failed(response) 
    }) 
    .catch((error) => { 
    failed(error); 
    }); 

Ensuite, ce que vous voulez probablement vérifier est de s'assurer que c'est un 200 qui revient.

axios.$http.get('/somedata') 
    .then(response => { 
    if(response.status === 200) 
     success(response.data); 
    else 
     failed(response) 
    }) 
    .catch((error) => { 
    failed(error); 
    });