57 lines
1.9 KiB
TypeScript
57 lines
1.9 KiB
TypeScript
import { Injectable } from '@angular/core';
|
|
import { HttpClient, HttpErrorResponse } from '@angular/common/http';
|
|
import { Observable, throwError } from 'rxjs';
|
|
import { catchError } from 'rxjs/operators';
|
|
import { ApiResponse } from '@interfaces/models/api.model'; // Assure-toi que ce fichier et cette interface existent
|
|
|
|
@Injectable({
|
|
providedIn: 'root',
|
|
})
|
|
export class ApiService {
|
|
private baseUrl = 'http://localhost:8080';
|
|
|
|
constructor(private http: HttpClient) {}
|
|
|
|
get<T>(endpoint: string): Observable<T> {
|
|
console.log(
|
|
`ApiService: Making GET request to ${this.baseUrl}/${endpoint}`
|
|
);
|
|
return this.http
|
|
.get<T>(`${this.baseUrl}/${endpoint}`)
|
|
.pipe(catchError(this.handleError));
|
|
}
|
|
|
|
post<T>(endpoint: string, body: any): Observable<ApiResponse<T>> {
|
|
return this.http
|
|
.post<ApiResponse<T>>(`${this.baseUrl}/${endpoint}`, body)
|
|
.pipe(catchError(this.handleError));
|
|
}
|
|
|
|
put<T>(endpoint: string, body: any): Observable<ApiResponse<T>> {
|
|
console.log(endpoint, body);
|
|
return this.http
|
|
.put<ApiResponse<T>>(`${this.baseUrl}/${endpoint}`, body)
|
|
.pipe(catchError(this.handleError));
|
|
}
|
|
|
|
delete<T>(endpoint: string): Observable<ApiResponse<T>> {
|
|
return this.http
|
|
.delete<ApiResponse<T>>(`${this.baseUrl}/${endpoint}`)
|
|
.pipe(catchError(this.handleError));
|
|
}
|
|
|
|
private handleError(error: HttpErrorResponse): Observable<never> {
|
|
let errorMessage = 'Une erreur est survenue';
|
|
|
|
if (error.error instanceof ErrorEvent) {
|
|
// Erreur côté client ou réseau
|
|
errorMessage = `Erreur côté client : ${error.error.message}`;
|
|
} else {
|
|
// Erreur côté serveur
|
|
errorMessage = `Erreur côté serveur : ${error.status} - ${error.message}`;
|
|
}
|
|
|
|
console.error('ApiService: Error occurred:', errorMessage); // Debug
|
|
return throwError(() => new Error(errorMessage));
|
|
}
|
|
}
|