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(endpoint: string): Observable { console.log( `ApiService: Making GET request to ${this.baseUrl}/${endpoint}` ); return this.http .get(`${this.baseUrl}/${endpoint}`) .pipe(catchError(this.handleError)); } post(endpoint: string, body: any): Observable> { return this.http .post>(`${this.baseUrl}/${endpoint}`, body) .pipe(catchError(this.handleError)); } put(endpoint: string, body: any): Observable> { console.log(endpoint, body); return this.http .put>(`${this.baseUrl}/${endpoint}`, body) .pipe(catchError(this.handleError)); } delete(endpoint: string): Observable> { return this.http .delete>(`${this.baseUrl}/${endpoint}`) .pipe(catchError(this.handleError)); } private handleError(error: HttpErrorResponse): Observable { 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)); } }