jpe-controle/FencerJudgeFront/src/app/services/api/api.service.ts
2025-06-03 14:14:54 +02:00

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));
}
}