refactor: use RFC 7807 standard for error handling
All checks were successful
Build and Deploy Angular App / build (push) Successful in 1m30s
All checks were successful
Build and Deploy Angular App / build (push) Successful in 1m30s
This commit is contained in:
parent
10bf53adec
commit
eda6ca4b1a
@ -158,7 +158,7 @@ export default abstract class ApiService {
|
|||||||
|
|
||||||
private handleError(error: HttpErrorResponse): void {
|
private handleError(error: HttpErrorResponse): void {
|
||||||
// todo: change to Retry-After condition
|
// todo: change to Retry-After condition
|
||||||
if (error.error && error.error.toString().includes("setup")) {
|
if (error.error && error.error.detail.includes("setup")) {
|
||||||
this.router.navigate(['/setup/']).then();
|
this.router.navigate(['/setup/']).then();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -168,38 +168,40 @@ export default abstract class ApiService {
|
|||||||
if (error.error instanceof ErrorEvent) {
|
if (error.error instanceof ErrorEvent) {
|
||||||
title = `Произошла ошибка: ${error.error.message}`;
|
title = `Произошла ошибка: ${error.error.message}`;
|
||||||
} else {
|
} else {
|
||||||
switch (error.status) {
|
if (error.error && error.error.type && error.error.title) {
|
||||||
case 0:
|
title = error.error.title || `Ошибка с кодом ${error.status}`;
|
||||||
title = 'Неизвестная ошибка. Пожалуйста, попробуйте позже.';
|
message = error.error.detail || 'Неизвестная ошибка';
|
||||||
break;
|
} else {
|
||||||
case 400:
|
switch (error.status) {
|
||||||
title = 'Ошибка запроса. Пожалуйста, проверьте отправленные данные.';
|
case 0:
|
||||||
break;
|
title = 'Неизвестная ошибка. Пожалуйста, попробуйте позже.';
|
||||||
case 401:
|
break;
|
||||||
this.router.navigate(['/login/']).then();
|
case 400:
|
||||||
title = 'Ошибка авторизации. Пожалуйста, выполните вход с правильными учетными данными.';
|
title = 'Ошибка запроса. Пожалуйста, проверьте отправленные данные.';
|
||||||
break;
|
break;
|
||||||
case 403:
|
case 401:
|
||||||
title = 'Отказано в доступе. У вас нет разрешения на выполнение этого действия.';
|
this.router.navigate(['/login/']).then();
|
||||||
break;
|
title = 'Ошибка авторизации. Пожалуйста, выполните вход с правильными учетными данными.';
|
||||||
case 404:
|
break;
|
||||||
title = 'Запрашиваемый ресурс не найден.';
|
case 403:
|
||||||
break;
|
title = 'Отказано в доступе. У вас нет разрешения на выполнение этого действия.';
|
||||||
case 500:
|
break;
|
||||||
title = 'Внутренняя ошибка сервера. Пожалуйста, попробуйте позже.';
|
case 404:
|
||||||
break;
|
title = 'Запрашиваемый ресурс не найден.';
|
||||||
case 503:
|
break;
|
||||||
title = 'Сервер на обслуживании. Пожалуйста, попробуйте позже.';
|
case 500:
|
||||||
break;
|
title = 'Внутренняя ошибка сервера. Пожалуйста, попробуйте позже.';
|
||||||
default:
|
break;
|
||||||
title = `Сервер вернул код ошибки: ${error.status}`;
|
case 503:
|
||||||
break;
|
title = 'Сервер на обслуживании. Пожалуйста, попробуйте позже.';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
title = `Сервер вернул код ошибки: ${error.status}`;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (error.error?.Error)
|
|
||||||
message = error.error.Error;
|
if (!message)
|
||||||
else if (error.error instanceof String)
|
|
||||||
message = error.error.toString();
|
|
||||||
else
|
|
||||||
message = error.error.statusMessage;
|
message = error.error.statusMessage;
|
||||||
}
|
}
|
||||||
this.notify.error(message == '' ? undefined : message, title);
|
this.notify.error(message == '' ? undefined : message, title);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user