LÝ THUYẾT VỀ API
KháiPHẦN niệm1: "NhàLÝ Hàng"THUYẾT vàVỀ BồiAPI
Bàn
1.1. API là gì?
Đừng để cái tên dài thòng API (Application Programming Interface -– Giao diện lậpLập trình ứngỨng dụng) làm bạn hoang mang. Hãy tưởng tượng bạn đang đi ăn ởlà một tập hợp nhàquy hàng:
Bạn (Client / Ứng dụng điện thoại):Bạn ngồi ở bàn, xem menutắc vàbiếtgiaomình muốn ăn gì (Bạn cần dữ liệu).Nhà bếp (Server / Database - Cơ sở dữ liệu):thứcNơi chứa nguyên liệu và nấu ra món ăn (Nơi chứa dữ liệu).Người Bồi Bàn (Chính là API):Bạn không thể tự chạy tọt vào bếp để nấu hay lấy đồ ăn. Bạn phải gọi bồi bàn. Bồi bàn sẽ ghi lại yêu cầu của bạn, chạy vào bếp báo lại, chờ bếp làm xong rồi bưng món ăn ra bànchobạn.phép
=>ứng Tóm lại: API chính là "anh bồi bàn" giúp hai hệ thốngdụng phần mềm (ứngkhác dụngnhau củagiao bạn và máy chủ) nói chuyệntiếp và trao đổi dữ liệu với nhau một cách an toàn.
1. Bốn Hành Động Cơ Bản Của API
Anh bồi bàn API có 4 phương thức (Method) làm việc tương ứng:
GET (Lấy thông tin):Giống lệnhSELECTtrong SQL.Ví dụ:Bạn xin bồi bàn cuốn Menu. Bạn chỉ "xem" chứmà khôngthaycầnđổibiếtgìchicả.tiếtLênbênmạng đọc báo, lướt Facebook xem ảnh... tất cả đều đang dùng lệnh GET.
POST (Gửi / Thêm mới):Giống lệnhINSERTtrong SQL.Ví dụ:Bạn "chốt đơn" và gửi yêu cầu nấu món mới vào bếp. Khi bạn đăng một bức ảnh mới lên mạng hay tạo tài khoản mới, bạn đang dùng POST.
PUT / PATCH (Cập nhật / Sửa):Giống lệnhUPDATEtrong SQL.Ví dụ:Món ăn đang làm, nhưng bạn gọi bồi bàn lại và bảo:"Cho anh thêm ít ớt vào bát phở nhé". Bạn đang sửa thông tin đã có.
DELETE (Xóa):Giống lệnhDELETEtrong SQL.Ví dụ:Bạn đổi ý và bảo bồi bàn hủy món đó đi.
2. Định dạng JSON
Người bồi bàn dùng cái khay để bưng đồ ăn. Còn API thì thường dùng một "cái khay" có tên là JSON để bưng dữ liệu.
JSON là một định dạng chữ cực kỳ dễ đọc. Nó luôn đi theo từng cặp "Tên_thuộc_tính": "Giá_trị".trong.
Ví dụ,dụ bồiminh bànhọa APIdễ hiểu: Khi bạn gọi món ăn ở nhà hàng, bạn không vào bếp tự nấu mà chỉ nói với người phục vụ (API). Người phục vụ sẽ truyền yêu cầu đến bếp (server) và mang thôngmón tinăn một(dữ người dùngliệu) ra cho bạn bằng khay JSON sẽ trông như thế này:bạn.
1.2. Các JSONloại API phổ
{
"ID_NhanVien": 101,
"HoTen": "Nguyễn Văn A",
"VaiTro": "Lập trình viên",
"DangHoatDong": true
}
biến
{
"ID_NhanVien": 101,
"HoTen": "Nguyễn Văn A",
"VaiTro": "Lập trình viên",
"DangHoatDong": true
}
| Loại API | Mô tả | Ví dụ thực tế |
|---|---|---|
| Web API | API chạy trên web, dùng HTTP | Google Maps API, OpenWeather |
| Library API | Thư viện trong code | Math library trong Python |
| Operating System API | API của hệ điều hành | Windows API |
| Hardware API | Giao tiếp với phần cứng | Camera API trên điện thoại |
Trong phát triển web hiện nay, chúng ta chủ yếu làm việc với Web API, đặc biệt là RESTful API.
1.3. CácRESTful API là gì?
REST (Representational State Transfer) là một kiến trúc phần mềm được Roy Fielding đề xuất năm 2000. RESTful API là API tuân thủ 6 nguyên tắc chính của REST:
- Client-Server
- Stateless (mỗi request phải chứa đầy đủ thông tin)
- Cacheable
- Uniform Interface
- Layered System
- Code on Demand (tùy chọn)
1.4. Phương thức HTTP (HTTP Methods) trong API
| Phương thức | Ý nghĩa | CRUD | An toàn & Idempotent |
|---|---|---|---|
| GET | Lấy dữ liệu | Read | Có |
| POST | Tạo dữ liệu mới | Create | Không |
| PUT | Cập nhật toàn bộ | Update | Có |
| PATCH | Cập nhật một phần | Update | Không |
| DELETE | Xóa dữ liệu | Delete | Có |
1.5. Mã Trạngtrạng Tháithái HTTP (HTTP Status Code)Codes)
| Nhóm | Ý nghĩa | Mã phổ biến |
|---|---|---|
| 2xx | Thành công | 200 OK, 201 Created, 204 No Content |
| 3xx | Chuyển hướng | 301, 302 |
| 4xx | Lỗi từ phía Client | 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found |
| 5xx | Lỗi từ phía Server | 500 Internal Server Error |
1.6. Xác thực và Ủy quyền (Authentication & Authorization)
ĐâyCác làphương cácpháp mãphổ biến:
- API Key (đơn giản)
- Basic Auth (username + password)
- Bearer Token / JWT (phổ biến nhất
bạnhiệnbắtnay) - OAuth
phải2.0biết:(Google, Facebook login)
1.7. Định dạng dữ liệu
🟢Mã 200JSON (OK):phổAPIbiếnhoạt động tốt và đã trả về dữ liệu.nhất)🟡Mã 400XML (BadcũRequest):hơn,LỗiSOAPdodùngbạn gửi sai dữ liệu, sai định dạng.nhiều)🟠Mã 404Form-data (NotuploadFound):Đường dẫn API không tồn tại hoặc dữ liệu bạn tìm đã bị xóa.🔴Mã 500 (Internal Server Error):(Máy chủ bị sập hoặc code của lập trình viên bị lỗi.file)
1.8.
API
💡BestMẹoPracticesnhớkhinhanh:thiết>kế* Số bắt đầu bằng2xx: Thành công.
- Sử
Sốdụngbắtdanhđầutừ cho resource (ví dụ: /users, /posts)- Phiên bản API (/v1/users)
- Pagination, Filtering, Sorting
- Rate Limiting
- Hỗ trợ CORS
- Document API bằng
4xx: Lỗi do người dùng (Client).
Số bắt đầu bằng5xx: Lỗi do hệ thống máy chủ (Server).Swagger/OpenAPI