2016-12-02 6 views
0

Я делаю сценарий, чтобы загрузить некоторые данные из моего API:Поймайте() не обрабатывает 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 является несуществующей страницей поэтому возвращает 404. Но улов не обрабатывает этот , Почему нет? В моей консоли у меня есть ошибка TypeError: Cannot read property 'data' of undefined. Почему он не запускает функцию failed()? Я не понимаю.

+0

Возможный дубликат [Promise: тогда против тогда + задвижка] (http://stackoverflow.com/questions/33278280/promise-then-vs-then-catch) – CMedina

+0

какая версия Аксиос вы используете? – roger

+0

Последняя версия: 0.15.2 – Jordy

ответ

0

Судя по сообщению об ошибке, это выглядит как «success (response.data)»; вызывается. Возможно ли, что сервер успешно возвращает страницу, которая говорит что-то вроде «Ошибка 404», а не фактически возвращает код ответа HTTP 404?

+0

Нет, он возвращает код ответа 404. – Jordy

0

Обнаруженные это было связано с пользовательской обработки 401 ошибки (но не 404 ошибок) перехватчик ...

+0

Предположительно вы имеете в виду «... настраиваемый перехватчик, который предназначен для обработки 401-ошибок и который должен * перебросить все остальные ... но не "? –

0

Вы можете impliment чек на 404-х.

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); 
    }); 

И снова то, что вы, вероятно, хотите проверить, это убедиться, что это 200, который возвращается.

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