HttpClient คือ Service ของ Angular สำหรับเรียก HTTP API โดย method เช่น get, post, put, delete จะคืนค่าเป็น Observable เพื่อให้จัดการข้อมูลแบบ asynchronous ได้
%%{init: {"theme": "base", "themeVariables": {"primaryColor": "#fabd2f", "primaryTextColor": "#282828", "primaryBorderColor": "#b57614", "lineColor": "#7c6f64", "secondaryColor": "#83a598", "tertiaryColor": "#b8bb26", "background": "#fbf1c7", "mainBkg": "#ebdbb2", "fontFamily": "Tahoma, sans-serif"}}}%%
flowchart LR
subgraph Era1["ยุค AJAX / XMLHttpRequest"]
A["XMLHttpRequest
Callback Based"]
end
subgraph Era2["ยุค Fetch / Promise API"]
B["fetch()
Promise Based"]
end
subgraph Era3["ยุค Angular HttpClient / Observable API"]
C["HttpClient
Observable Based"]
D["Interceptors
จัดการ Header/Error กลาง"]
end
A --> B --> C --> D
AppModule importsconstructor(private http: HttpClient) {}http.get<User[]>('/api/users')http.post<User>('/api/users', body)http.put('/api/users/1', body)http.delete('/api/users/1')Authorization Token และ Content-Typepage=1&limit=10| Method | HttpClient | หน้าที่ | ตัวอย่าง Endpoint |
|---|---|---|---|
| GET | http.get<T>() |
ดึงข้อมูล | /api/users |
| POST | http.post<T>() |
สร้างข้อมูล | /api/users |
| PUT | http.put<T>() |
อัปเดตข้อมูลเต็ม | /api/users/1 |
| PATCH | http.patch<T>() |
อัปเดตบางส่วน | /api/users/1 |
| DELETE | http.delete<T>() |
ลบข้อมูล | /api/users/1 |
%%{init: {"theme": "base", "themeVariables": {"primaryColor": "#fabd2f", "primaryTextColor": "#282828", "primaryBorderColor": "#b57614", "lineColor": "#7c6f64", "secondaryColor": "#83a598", "tertiaryColor": "#b8bb26", "background": "#fbf1c7", "mainBkg": "#ebdbb2", "fontFamily": "Tahoma, sans-serif"}}}%%
flowchart LR
A["Component
หน้าจอ"] --> B["UserService
เรียก API"]
B --> C["HttpClient
HTTP Request"]
C --> D["REST API
Server"]
D --> E["JSON Response
ข้อมูลตอบกลับ"]
E --> B --> A
// user-api.service.ts
// Service สำหรับเรียก REST API ด้วย HttpClient
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
import { Observable } from 'rxjs';
export interface User {
id: number;
name: string;
email: string;
}
@Injectable({ providedIn: 'root' })
export class UserApiService {
private apiUrl = '/api/users';
constructor(private http: HttpClient) {}
getUsers(page = 1): Observable<User[]> {
const params = new HttpParams().set('page', page);
return this.http.get<User[]>(this.apiUrl, { params });
}
createUser(body: Omit<User, 'id'>): Observable<User> {
const headers = new HttpHeaders({ 'Content-Type': 'application/json' });
return this.http.post<User>(this.apiUrl, body, { headers });
}
updateUser(id: number, body: Partial<User>): Observable<User> {
return this.http.put<User>(`${this.apiUrl}/${id}`, body);
}
deleteUser(id: number): Observable<void> {
return this.http.delete<void>(`${this.apiUrl}/${id}`);
}
}
// ตัวอย่างการใช้งาน:
// this.userApi.getUsers().subscribe(users => this.users = users);
UserApiServicegetUsers, createUser, updateUser, deleteUser