Explore all courses in this category.
Explore all courses in this category.
Nguyễn Đình Cường
0 comment
09 Nov, 2026
Ứng dụng thời tiết trên điện thoại không tự đo nhiệt độ; nó hỏi một dịch vụ khác. Nút "Đăng nhập bằng tài khoản khác" cũng vậy. Cầu nối cho tất cả những cuộc trò chuyện đó là API.
API (Application Programming Interface - giao diện lập trình ứng dụng) là tập quy tắc cho phép một phần mềm yêu cầu dịch vụ hoặc dữ liệu từ phần mềm khác mà không cần biết bên trong nó làm gì. Hãy nghĩ đến nhà hàng: bạn (client) gọi món qua người phục vụ (API), nhà bếp (server) chế biến và đưa món ra. Bạn không vào bếp, cũng không cần biết công thức.
API có nhiều dạng; trong bối cảnh web, người ta thường nói tới Web API hoạt động qua HTTP.
Phong cách thiết kế phổ biến nhất là REST. Mỗi loại tài nguyên có một địa chỉ (endpoint), và bạn dùng phương thức HTTP để nói muốn làm gì:
| Yêu cầu | Ý nghĩa |
|---|---|
| GET /courses | Lấy danh sách khóa học |
| GET /courses/5 | Lấy khóa học có id 5 |
| POST /courses | Tạo khóa học mới |
| PUT /courses/5 | Cập nhật khóa học 5 |
| DELETE /courses/5 | Xóa khóa học 5 |
Dữ liệu thường trao đổi dạng JSON, một định dạng văn bản dễ đọc cho cả người lẫn máy:
{
"id": 5,
"ten": "Python cơ bản",
"mien_phi": false,
"chu_de": ["lập trình", "người mới"]
}Ví dụ gọi một API công khai bằng Python với thư viện chuẩn:
import json
import urllib.request
url = "https://jsonplaceholder.typicode.com/todos/1"
with urllib.request.urlopen(url) as res:
du_lieu = json.loads(res.read().decode("utf-8"))
print(du_lieu["title"])
print(du_lieu["completed"])Và bằng JavaScript trong trình duyệt:
fetch("https://jsonplaceholder.typicode.com/todos/1")
.then(res => res.json())
.then(du_lieu => console.log(du_lieu.title));Địa chỉ ví dụ trên là một dịch vụ giả lập dành cho thực hành, trả về dữ liệu mẫu. Bạn nên tìm các API công khai miễn phí để luyện tập, và luôn đọc điều khoản sử dụng.
Nhiều API yêu cầu bạn chứng minh danh tính để biết ai đang gọi và giới hạn lượt dùng. Cách phổ biến là khóa API (API key) hoặc token gửi kèm trong header:
Authorization: Bearer ten_token_cua_banKhóa API giống mật khẩu: không đưa vào mã nguồn công khai, không commit lên Git. Hãy lưu trong biến môi trường hoặc file cấu hình được bỏ qua bởi .gitignore.
Một API tốt đi kèm tài liệu cho biết:
Khi làm backend, bạn xây API để frontend hay ứng dụng di động sử dụng. Ví dụ rất ngắn bằng Python với Flask:
from flask import Flask, jsonify
app = Flask(__name__)
@app.get("/api/chao")
def chao():
return jsonify({"loi_chao": "Xin chào từ API"})
if __name__ == "__main__":
app.run()Chạy file rồi mở http://127.0.0.1:5000/api/chao trong trình duyệt, bạn sẽ thấy JSON trả về. Đó là một API hoàn chỉnh nhỏ nhất.
Một ứng dụng đáng tin phải tính đến chuyện API thất bại. Mẫu gọi API cẩn thận:
import json
import urllib.request
import urllib.error
def lay_du_lieu(url):
try:
with urllib.request.urlopen(url, timeout=5) as res:
return json.loads(res.read().decode("utf-8"))
except urllib.error.HTTPError as e:
print("Máy chủ trả lỗi:", e.code)
except urllib.error.URLError as e:
print("Không kết nối được:", e.reason)
except json.JSONDecodeError:
print("Phản hồi không phải JSON hợp lệ")
return None
print(lay_du_lieu("https://jsonplaceholder.typicode.com/todos/1"))Ba kiểu sự cố được phân biệt: máy chủ trả mã lỗi, không kết nối được (mạng, DNS), và dữ liệu sai định dạng. Đặt timeout để chương trình không treo mãi.
Các thực hành tốt khác: thử lại có giới hạn khi gặp lỗi tạm thời 5xx, lưu đệm kết quả để giảm số lần gọi, và không bao giờ giả định một trường JSON luôn có mặt. Hãy dùng .get() hoặc kiểm tra tồn tại trước khi truy cập.
API là cách các phần mềm phối hợp, từ ứng dụng di động gọi máy chủ cho tới dịch vụ này dùng dịch vụ kia. Thực hành gọi một API công khai, đọc JSON trả về và hiển thị nó thành giao diện đơn giản, bạn sẽ hiểu bản chất rất nhanh.
Nếu cần một lộ trình rõ ràng thay vì tự mò mẫm, codebem.com có nhiều khóa học phù hợp cho người mới.
Nguyễn Đình Cường
0 comment