Юзаю nuxt.axios
Плагин для axios у меня, который обрабатывает ошибки
/plugins/axios.jsexport default ({ $axios, error, $auth }) => {
$axios.onError(({ response }) => {
const statusCode = response.status
const message = response.data.message
switch (statusCode) {
case 401:
$auth.logout()
break
case 422:
break
case 500:
break
default:
error({
statusCode,
message,
})
}
})
}
Каждый статус код в конструкции switch позволяет приложению не падать, а работать дальше, что бы вы смогли в месте, где вызываете метод, вернувший ошибку что либо сделать. Или же, как у меня в случае с ошибкой 401 написать свою логику.
Далее, в компоненте где используется функция для запроса:
/pages/sign-in.vueexport default {
methods: {
async onSignIn () {
try {
await this.$auth.signIn(...)
} catch (error) {
this.showErrors(error)
}
},
}
}
Само тело функции
async signIn ({ username, password }) {
const { token, expireAt, user } = await $axios.$post(..., {
username,
password,
})
//....
}
В итоге получаем, что вызвав в компоненте асинхронный метод, в нём же и обрабатываю ошибки, выводя их в специальных окошечках для уведомлений