feat: add api service
This commit is contained in:
parent
272c76cfa8
commit
d26c3d885b
4
src/config/environment.ts
Normal file
4
src/config/environment.ts
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
export const environment = {
|
||||||
|
apiUrl: 'http://localhost:5269/api/v1/',
|
||||||
|
production: false
|
||||||
|
}
|
84
src/services/api.service.ts
Normal file
84
src/services/api.service.ts
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
import {Injectable} from '@angular/core';
|
||||||
|
import {catchError, Observable, throwError} from "rxjs";
|
||||||
|
import {HttpClient} from "@angular/common/http";
|
||||||
|
import {NotifyColor, OpenNotifyService} from "@service/open-notify.service";
|
||||||
|
import {environment} from "@/config/environment";
|
||||||
|
|
||||||
|
@Injectable({
|
||||||
|
providedIn: 'root'
|
||||||
|
})
|
||||||
|
|
||||||
|
export class ApiService {
|
||||||
|
constructor(private http: HttpClient, private notify: OpenNotifyService) {
|
||||||
|
}
|
||||||
|
|
||||||
|
private urlApi = environment.apiUrl;
|
||||||
|
|
||||||
|
get<Type>(endpoint: string): Observable<Type> {
|
||||||
|
return this.http.get<Type>(this.urlApi + endpoint).pipe(
|
||||||
|
catchError(error => {
|
||||||
|
this.handleError(error);
|
||||||
|
return throwError(error);
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
post<Type>(endpoint: string, data: any): Observable<Type> {
|
||||||
|
return this.http.post<Type>(this.urlApi + endpoint, data).pipe(
|
||||||
|
catchError(error => {
|
||||||
|
this.handleError(error);
|
||||||
|
return throwError(error);
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
put<Type>(endpoint: string, data: any): Observable<Type> {
|
||||||
|
return this.http.put<Type>(this.urlApi + endpoint, data).pipe(
|
||||||
|
catchError(error => {
|
||||||
|
this.handleError(error);
|
||||||
|
return throwError(error);
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
delete<Type>(endpoint: string): Observable<Type> {
|
||||||
|
return this.http.delete<Type>(this.urlApi + endpoint).pipe(
|
||||||
|
catchError(error => {
|
||||||
|
this.handleError(error);
|
||||||
|
return throwError(error);
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private handleError(error: any): void {
|
||||||
|
let message: string;
|
||||||
|
if (error.error instanceof ErrorEvent) {
|
||||||
|
message = `Произошла ошибка: ${error.error.message}`;
|
||||||
|
} else {
|
||||||
|
switch (error.status) {
|
||||||
|
case 0:
|
||||||
|
message = 'Неизвестная ошибка. Пожалуйста, попробуйте позже.';
|
||||||
|
break;
|
||||||
|
case 400:
|
||||||
|
message = 'Ошибка запроса. Пожалуйста, проверьте отправленные данные.';
|
||||||
|
break;
|
||||||
|
case 401:
|
||||||
|
message = 'Ошибка авторизации. Пожалуйста, выполните вход с правильными учетными данными.';
|
||||||
|
break;
|
||||||
|
case 403:
|
||||||
|
message = 'Отказано в доступе. У вас нет разрешения на выполнение этого действия.';
|
||||||
|
break;
|
||||||
|
case 404:
|
||||||
|
message = 'Запрашиваемый ресурс не найден.';
|
||||||
|
break;
|
||||||
|
case 500:
|
||||||
|
message = 'Внутренняя ошибка сервера. Пожалуйста, попробуйте позже.';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
message = `Сервер вернул код ошибки: ${error.status}`;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.notify.open(message, NotifyColor.Danger);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user