Tìm hiểu về API: REST, GraphQL và cách gọi API đầu tiên cho lập trình viên mới
Mục lục bài viết
1. API là gì? Tại sao lập trình viên nào cũng cần hiểu?
API (Application Programming Interface) là cầu nối cho phép các ứng dụng giao tiếp với nhau.
Ví dụ: ứng dụng thời tiết trên điện thoại của bạn gọi API của OpenWeatherMap để lấy dữ liệu thời tiết mới nhất. Thay vì tự xây dựng trạm thời tiết, ứng dụng chỉ cần gửi yêu cầu (request) qua API và nhận dữ liệu (response) về.
API hoạt động như nhà hàng: bạn (client) đưa yêu cầu cho phục vụ (API), phục vụ chuyển xuống bếp (server), và mang món ăn (data) ra cho bạn.
Mọi ứng dụng hiện đại đều dùng API: từ đặt xe, thanh toán đến đăng nhập Google/Facebook.
2. REST API — Kiến trúc phổ biến nhất
REST (Representational State Transfer) là kiến trúc API phổ biến nhất, dùng giao thức HTTP. Mỗi tài nguyên (resource) có một URL riêng.
Các phương thức HTTP: GET (lấy dữ liệu), POST (tạo mới), PUT/PATCH (cập nhật), DELETE (xóa).
Ví dụ: GET https://api.example.com/users — lấy danh sách người dùng. POST https://api.example.com/users — tạo người dùng mới. Dữ liệu trả về thường ở định dạng JSON. REST dễ hiểu, cache tốt, phù hợp hầu hết ứng dụng.
Nhược điểm: có thể lấy dư dữ liệu (over-fetching) hoặc thiếu (under-fetching), phải gọi nhiều endpoint.
3. GraphQL — Linh hoạt và hiệu quả hơn
GraphQL do Facebook phát triển, cho phép client chỉ định chính xác dữ liệu cần lấy. Thay vì nhiều endpoint REST, GraphQL chỉ có một endpoint duy nhất. Client gửi query (truy vấn) mô tả cấu trúc dữ liệu mong muốn.
Ví dụ: thay vì gọi /users rồi /users/1/posts, bạn gửi một query: query { user(id:1) { name, email, posts { title } } }. GraphQL chỉ trả về đúng name, email và title của posts — không thừa, không thiếu.
Ưu điểm: linh hoạt, giảm số lượng request.
Nhược điểm: phức tạp hơn để cache, server phức tạp hơn. Phù hợp ứng dụng có nhiều quan hệ dữ liệu phức tạp.
4. Gọi API đầu tiên bằng Python chỉ với 5 dòng code
Không cần cài thư viện gì thêm, Python có sẵn thư viện urllib.request hoặc dùng requests (cài bằng pip install requests).
Ví dụ gọi API lấy dữ liệu giả: import requests; response = requests.get('https://jsonplaceholder.typicode.com/posts/1'); data = response.json(); print(data['title']). Kết quả sẽ in ra tiêu đề bài post số 1.
Giải thích: requests.get() gửi yêu cầu GET, response.json() chuyển dữ liệu JSON thành dictionary Python. Từ 5 dòng code này, bạn có thể gọi bất kỳ API nào: thời tiết, giá crypto, tin tức. Luôn đọc tài liệu API để biết URL, phương thức, tham số và xác thực (API key).
🙋 Câu hỏi thường gặp
REST và GraphQL cái nào tốt hơn?
Không có cái nào 'tốt hơn' tuyệt đối. REST đơn giản, dễ học, phù hợp với hầu hết ứng dụng CRUD. GraphQL mạnh khi cần query dữ liệu phức tạp, nhiều quan hệ. Người mới nên học REST trước.
API key là gì và có cần không?
API key là mã xác thực để server biết bạn là ai và có quyền truy cập hay không. Hầu hết API công cộng đều yêu cầu key (thường miễn phí). Luôn giữ key bí mật, không commit lên GitHub.
Làm sao để kiểm tra API mà không cần viết code?
Dùng Postman (miễn phí) — nhập URL, chọn phương thức, thêm headers, nhấn Send. Hoặc dùng curl trong terminal. Công cụ này giúp bạn test API trước khi tích hợp vào code.