Membuat Panggilan API di Angular
![]() |
sumber: gitconnected.com |
Mengimpor dan menggunakan HttpClient
import { HttpClient } from '@angular/common/http';import { Injectable } from '@angular/core';import { Observable } from 'rxjs';@Injectable({providedIn: 'root'})export class ApiService {private apiUrl = 'https://api.example.com/data';constructor(private http: HttpClient) {}getData(): Observable<any> {return this.http.get<any>(this.apiUrl);}}
Bekerja dengan Respons dan Kesalahan API
import { catchError } from 'rxjs/operators';import { throwError } from 'rxjs';getData(): Observable<any> {return this.http.get<any>(this.apiUrl).pipe(catchError(error => {console.error('Error fetching data:', error);return throwError(() => new Error('Failed to load data'));}));}
Caching untuk Mengoptimalkan Panggilan API
import { BehaviorSubject, of } from 'rxjs';import { tap } from 'rxjs/operators';private cache$ = new BehaviorSubject<any>(null);getCachedData(): Observable<any> {if (this.cache$.getValue()) {return of(this.cache$.getValue());}return this.http.get<any>(this.apiUrl).pipe(tap(data => this.cache$.next(data)));}
Hal ini memastikan bahwa data hanya diambil ketika diperlukan dan disimpan untuk penggunaan selanjutnya.
Penangan API Global dengan Interceptors
Pengembang dapat menggunakan pencegat untuk melakukan hal-hal seperti menambahkan token autentikasi, mencatat permintaan, dan secara konsisten menangani kesalahan di berbagai panggilan API.
Contoh penggunaan interceptor HTTP untuk menambahkan token autentikasi:
import { HttpInterceptor, HttpRequest, HttpHandler } from '@angular/common/http';
import { Injectable } from '@angular/core';
@Injectable()
export class AuthInterceptor implements HttpInterceptor {
intercept(req: HttpRequest<any>, next: HttpHandler) {
const clonedRequest = req.clone({
setHeaders: { Authorization: `Bearer token_value` }
});
return next.handle(clonedRequest);
}
}
Untuk menggunakan pencegat, sediakan di app.module.ts:
providers: [{ provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true }]
Manajemen Status yang Efisien dengan NgRx
Dalam kasus aplikasi yang kompleks, Anda dapat membantu mereka menjaga data tetap terpusat dengan menggunakan pustaka manajemen state seperti NgRx. NgRx dibangun di atas pola Redux yang berarti state aplikasi dapat diprediksi dengan menggunakan aksi, reduksi, dan efek.
import { createAction, props } from '@ngrx/store';export const loadData = createAction('[Data] Load Data');export const loadDataSuccess = createAction('[Data] Load Data Success', props<{ data: any }>());export const loadDataFailure = createAction('[Data] Load Data Failure', props<{ error: any }>());
Pendekatan ini membantu menjaga agar panggilan API dan manajemen data tetap terstruktur dan terukur.
Kesimpulan
Menangani pemanggilan API secara efisien di Angular SPA sangat penting untuk kinerja dan pengalaman pengguna. Dengan memanfaatkan HttpClient, operator RxJS, mekanisme caching, interceptor, dan pustaka manajemen state seperti NgRx, pengembang dapat membangun aplikasi Angular yang dapat diskalakan, efisien, dan mudah dipelihara. Menerapkan praktik terbaik ini memastikan bahwa interaksi API tetap lancar dan dioptimalkan untuk kasus penggunaan di dunia nyata.
Kembali ke>>>> Membangun Aplikasi Halaman Tunggal (SPA) dengan Angular