Skip to content
Dán nhãn

API là gì? Tìm hiểu chi tiết về REST API và cách hoạt động

Featured image of post API là gì? Tìm hiểu chi tiết về REST API và cách hoạt động

API (Application Programming Interface) là giao diện lập trình ứng dụng cho phép các phần mềm giao tiếp với nhau. Bài viết này giải thích API là gì, REST API hoạt động như thế nào, các loại API phổ biến và ứng dụng thực tế trong phát triển phần mềm.

API (Application Programming Interface) là giao diện lập trình cho phép các ứng dụng phần mềm giao tiếp với nhau. Bài viết giải thích chi tiết API là gì, REST API hoạt động như thế nào, các phương thức xác thực, nguyên tắc thiết kế API tốt và ứng dụng thực tế trong đời sống hàng ngày.

API là gì?

API (Application Programming Interface — Giao diện lập trình ứng dụng) là một tập hợp các quy tắc, giao thức và công cụ cho phép các ứng dụng phần mềm giao tiếp với nhau. Nói đơn giản, API là "người trung gian" giúp hai phần mềm hiểu và tương tác với nhau mà không cần biết chi tiết bên trong của nhau.

Ví dụ thực tế dễ hiểu

Hãy tưởng tượng bạn đang ngồi trong nhà hàng:

  • Bạn là ứng dụng client (người dùng).
  • Nhà bếp là server (nơi xử lý yêu cầu).
  • Người phục vụ chính là API — nhận order của bạn, chuyển cho nhà bếp, rồi mang món ăn đã hoàn thành về cho bạn.

Bạn không cần biết nhà bếp nấu như thế nào, và nhà bếp không cần biết bạn ngồi ở đâu. API đảm bảo giao tiếp giữa hai bên diễn ra trơn tru.

Các loại API phổ biến

REST API (RESTful API)

REST (Representational State Transfer) là kiến trúc API phổ biến nhất hiện nay. REST API sử dụng giao thức HTTP với các phương thức chuẩn:

  • GET: Lấy dữ liệu (ví dụ: lấy danh sách sản phẩm).
  • POST: Tạo dữ liệu mới (ví dụ: tạo đơn hàng).
  • PUT: Cập nhật toàn bộ dữ liệu (ví dụ: cập nhật thông tin khách hàng).
  • PATCH: Cập nhật một phần dữ liệu.
  • DELETE: Xóa dữ liệu.

Đặc điểm của REST API:

  • Sử dụng URL (endpoint) để xác định tài nguyên.
  • Dữ liệu trả về thường ở định dạng JSON hoặc XML.
  • Stateless — mỗi request độc lập, không phụ thuộc vào request trước đó.
  • Dễ hiểu, dễ triển khai và được hỗ trợ rộng rãi.

GraphQL

GraphQL do Facebook phát triển, cho phép client chỉ định chính xác dữ liệu cần lấy trong một request duy nhất, tránh tình trạng over-fetching (lấy thừa) hoặc under-fetching (lấy thiếu).

Ưu điểm:

  • Linh hoạt trong việc truy vấn dữ liệu.
  • Giảm số lượng request cần thiết.
  • Schema rõ ràng, tự tạo documentation.

Nhược điểm:

  • Phức tạp hơn REST khi triển khai.
  • Khó cache hiệu quả.

SOAP API

SOAP (Simple Object Access Protocol) là giao thức cũ hơn, sử dụng XML để trao đổi dữ liệu. Vẫn được sử dụng trong các hệ thống enterprise, ngân hàng và chính phủ nhờ tính bảo mật và độ tin cậy cao.

WebSocket API

WebSocket cho phép giao tiếp hai chiều theo thời gian thực giữa client và server. Phù hợp cho chat, game online, theo dõi giá chứng khoán hay thông báo realtime.

gRPC

gRPC do Google phát triển, sử dụng Protocol Buffers (protobuf) để serialize dữ liệu. Nhanh hơn REST nhờ sử dụng HTTP/2 và binary format, phù hợp cho microservices.

REST API hoạt động như thế nào?

Cấu trúc một API Request

Một REST API request bao gồm các thành phần:

Endpoint (URL): Địa chỉ xác định tài nguyên cần truy cập. Ví dụ:

GET https://api.example.com/v1/products
GET https://api.example.com/v1/products/123

HTTP Method: Phương thức xác định hành động cần thực hiện (GET, POST, PUT, DELETE).

Headers: Thông tin bổ sung như authentication token, content type, ngôn ngữ:

Authorization: Bearer eyJhbGciOiJIUzI1NiJ9...
Content-Type: application/json
Accept-Language: vi

Body (Request Payload): Dữ liệu gửi kèm (thường dùng với POST và PUT):

{
  "name": "Sản phẩm mới",
  "price": 299000,
  "category": "electronics"
}

Query Parameters: Bộ lọc và tùy chọn được thêm vào URL:

GET /products?category=electronics&sort=price&page=1

Cấu trúc một API Response

Server phản hồi với:

HTTP Status Code:

  • 200 OK — Thành công.
  • 201 Created — Tạo mới thành công.
  • 400 Bad Request — Yêu cầu không hợp lệ.
  • 401 Unauthorized — Chưa xác thực.
  • 403 Forbidden — Không có quyền truy cập.
  • 404 Not Found — Tài nguyên không tồn tại.
  • 429 Too Many Requests — Vượt quá giới hạn request.
  • 500 Internal Server Error — Lỗi server.

Response Body: Dữ liệu trả về, thường ở định dạng JSON:

{
  "status": "success",
  "data": {
    "id": 123,
    "name": "Sản phẩm mới",
    "price": 299000
  }
}

Xác thực API (Authentication)

Để bảo vệ API khỏi truy cập trái phép, có nhiều phương thức xác thực:

API Key

Phương thức đơn giản nhất — server cấp cho client một chuỗi ký tự duy nhất (API Key) để xác minh danh tính. API Key thường được gửi qua header hoặc query parameter.

OAuth 2.0

Giao thức xác thực phổ biến nhất cho các ứng dụng web và mobile. Cho phép bạn đăng nhập vào ứng dụng bằng tài khoản Google, Facebook mà không cần chia sẻ mật khẩu.

JWT (JSON Web Token)

Token mã hóa chứa thông tin người dùng, được ký bằng secret key. Server có thể xác minh token mà không cần truy vấn database.

Basic Authentication

Gửi username và password qua header HTTP, mã hóa Base64. Đơn giản nhưng kém bảo mật nếu không dùng HTTPS.

Thiết kế API tốt — Các nguyên tắc cơ bản

Đặt tên endpoint rõ ràng

Sử dụng danh từ số nhiều, mô tả tài nguyên:

✅ /api/v1/products
✅ /api/v1/users/123/orders
❌ /api/v1/getProducts
❌ /api/v1/create-new-order

Sử dụng versioning

Đánh phiên bản API để tránh breaking changes khi cập nhật:

/api/v1/products
/api/v2/products

Phân trang (Pagination)

Không trả về toàn bộ dữ liệu trong một response. Sử dụng phân trang để giảm tải:

/products?page=1&limit=20

Giới hạn tần suất (Rate Limiting)

Giới hạn số request mỗi client trong khoảng thời gian nhất định để bảo vệ server:

X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1640000000
Trả về thông tin rate limit trong mọi response
Luôn include `X-RateLimit-*` headers trong response — kể cả khi client chưa gần giới hạn. Client cần biết còn bao nhiêu quota để tự điều chỉnh. Trả về `429 Too Many Requests` với header `Retry-After` để client biết chờ bao lâu.

Xử lý lỗi nhất quán

Trả về message lỗi rõ ràng và nhất quán:

{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Trường 'email' không hợp lệ",
    "details": [
      {"field": "email", "message": "Phải là email hợp lệ"}
    ]
  }
}

API và Proxy — Mối liên hệ thực tế

Trong nhiều tình huống, API và proxy kết hợp chặt chẽ:

API Scraping với Proxy

Nhiều dịch vụ cung cấp API công khai nhưng áp dụng rate limiting nghiêm ngặt. Sử dụng proxy giúp phân tán request qua nhiều IP, tránh bị chặn khi gọi API với tần suất cao.

API Gateway và Reverse Proxy

API Gateway hoạt động như một reverse proxy cho các microservices, xử lý authentication, rate limiting, load balancing và routing cho tất cả API request.

Proxy API

Các nhà cung cấp proxy như TMProxy cung cấp API để quản lý proxy programmatically — tạo, xóa, xoay IP và theo dõi usage thông qua API calls.

Công cụ phát triển và kiểm thử API

  • Postman: Công cụ phổ biến nhất để kiểm thử API, hỗ trợ tạo collection, environment và automated testing.

  • Insomnia: Tương tự Postman, giao diện gọn nhẹ hơn. Hỗ trợ REST, GraphQL và gRPC.

  • Swagger/OpenAPI: Chuẩn mô tả API, cho phép tạo documentation tự động và interactive.

  • curl: Công cụ dòng lệnh đơn giản nhưng mạnh mẽ để gửi HTTP request.

API Performance Benchmark
Kiểm tra ngày 2026-02-20 REST vs GraphQL vs gRPC
Kết quả benchmark trên cùng dataset (1000 products, 10000 requests):
Chỉ số REST API GraphQL gRPC
Latency trung bình 45ms 52ms 12ms
Throughput 2200 req/s 1800 req/s 5500 req/s
Payload size 8.2 KB 3.1 KB 1.8 KB
Dễ triển khai Cao Trung bình Thấp

gRPC nhanh nhất nhờ HTTP/2 và binary format, nhưng khó triển khai. REST đơn giản nhất và phù hợp cho hầu hết use case. GraphQL tối ưu payload nhưng latency cao hơn do query parsing.

API trong đời sống hàng ngày

Bạn có thể không nhận ra, nhưng API hiện diện trong hầu hết mọi hoạt động kỹ thuật số hàng ngày:

Ứng dụng thời tiết

Khi bạn mở ứng dụng thời tiết trên điện thoại, ứng dụng gọi API từ dịch vụ khí tượng (như OpenWeatherMap hoặc WeatherAPI) để lấy dữ liệu nhiệt độ, độ ẩm, dự báo theo tọa độ GPS hiện tại. Mỗi lần refresh là một API call.

Đăng nhập bằng Google/Facebook (OAuth)

Khi bạn nhấn "Đăng nhập bằng Google" trên một trang web, ứng dụng sử dụng OAuth 2.0 API của Google để xác thực danh tính mà không cần bạn tạo tài khoản mới hay chia sẻ mật khẩu. Quy trình này bao gồm nhiều API call giữa ứng dụng, Google Authorization Server và Google Resource Server.

Thanh toán trực tuyến

Khi bạn thanh toán trên Shopee hay Tiki, website gọi API của cổng thanh toán (VNPay, MoMo, Stripe) để xử lý giao dịch. API xác minh thẻ, kiểm tra số dư, thực hiện giao dịch và trả kết quả — tất cả diễn ra trong vài giây.

Ứng dụng gọi xe

Grab và các ứng dụng gọi xe sử dụng hàng chục API đồng thời: Google Maps API cho bản đồ và routing, API nội bộ cho matching tài xế, Payment API cho thanh toán, Push Notification API cho thông báo realtime.

Chia sẻ lên mạng xã hội

Nút "Chia sẻ lên Facebook" trên các trang web sử dụng Facebook Graph API để đăng nội dung lên timeline của bạn. Twitter/X API, LinkedIn API cũng hoạt động tương tự — cho phép ứng dụng bên thứ ba tương tác với nền tảng mà không cần truy cập trực tiếp.

Chuyển đổi tiền tệ

Các ứng dụng ngân hàng và tài chính sử dụng Exchange Rate API để lấy tỷ giá hối đoái realtime. Mỗi khi bạn kiểm tra tỷ giá USD/VND, ứng dụng đang gọi API từ nhà cung cấp dữ liệu tài chính.

Thực hành tốt nhất cho REST API trong production

Khi triển khai API trong môi trường production, cần tuân thủ các best practice sau để đảm bảo hiệu năng, bảo mật và khả năng mở rộng:

Bắt buộc sử dụng HTTPS

Mọi API trong production phải sử dụng HTTPS. HTTP không mã hóa khiến dữ liệu — bao gồm API key, token và thông tin nhạy cảm — có thể bị đọc bởi bất kỳ ai trên đường truyền. Sử dụng TLS 1.3 cho bảo mật tối ưu và redirect tất cả HTTP request sang HTTPS.

Không bao giờ gửi API key qua HTTP
API key hoặc token gửi qua HTTP có thể bị đánh cắp bởi bất kỳ thiết bị nào trên cùng mạng (man-in-the-middle attack). Ngay cả trong môi trường dev/staging — hãy dùng HTTPS. Chi phí SSL/TLS certificate hiện tại là **$0** với Let's Encrypt.

Caching với ETags và Cache-Control

Sử dụng HTTP caching headers để giảm tải server và tăng tốc phản hồi. ETag cho phép client kiểm tra xem dữ liệu có thay đổi không trước khi tải lại. Cache-Control headers chỉ định thời gian cache cho từng loại response, giảm đáng kể số lượng request đến origin server.

Nén dữ liệu (Compression)

Bật gzip hoặc Brotli compression cho API responses. Với dữ liệu JSON, compression có thể giảm 60-80% kích thước payload, cải thiện đáng kể thời gian phản hồi đặc biệt trên kết nối chậm. Hầu hết framework hiện đại đều hỗ trợ compression tự động.

Cấu hình CORS đúng cách

Cross-Origin Resource Sharing (CORS) kiểm soát domain nào được phép gọi API. Cấu hình CORS chặt chẽ — chỉ cho phép các domain tin cậy, chỉ định methods và headers được chấp nhận. Tránh sử dụng wildcard * trong production vì nó cho phép bất kỳ domain nào gọi API.

Tài liệu API với OpenAPI/Swagger

API không có tài liệu là API vô dụng. Sử dụng OpenAPI Specification (OAS) để mô tả API một cách chuẩn hóa. Swagger UI tự động tạo tài liệu interactive từ OAS, cho phép developer thử nghiệm API trực tiếp. Luôn cập nhật tài liệu khi API thay đổi.

Sử dụng HTTP Status Codes có ý nghĩa

Sử dụng đúng HTTP status codes: 200 cho success, 201 cho created, 204 cho no content, 400 cho client error, 401 cho unauthorized, 403 cho forbidden, 404 cho not found, 429 cho rate limit, 500 cho server error. Đừng trả 200 cho mọi response rồi đặt error trong body — điều này gây khó khăn cho client xử lý lỗi.

Xu hướng API đáng chú ý

Thiết kế API-First

Ngày càng nhiều tổ chức áp dụng phương pháp "API-first" — thiết kế API trước khi viết code. API được coi là sản phẩm, với thiết kế cẩn thận, documentation đầy đủ và versioning rõ ràng ngay từ đầu.

GraphQL tiếp tục phát triển

GraphQL đang được áp dụng rộng rãi hơn, đặc biệt cho mobile apps và dashboard cần truy vấn dữ liệu phức tạp. Tuy nhiên, REST vẫn chiếm ưu thế cho hầu hết use case nhờ sự đơn giản và tooling phong phú.

API Marketplace

Các nền tảng API marketplace như RapidAPI cho phép developer khám phá, kết nối và quản lý hàng nghìn API từ một nơi. Mô hình "API as a Product" ngày càng phổ biến.

Serverless và Edge API

API được triển khai trên serverless platforms (AWS Lambda, Cloudflare Workers, Vercel Edge Functions) để giảm chi phí, tăng khả năng mở rộng và giảm latency.

AI và Machine Learning APIs

API cho AI/ML đang bùng nổ — từ OpenAI GPT API, Google Cloud AI, đến các dịch vụ chuyên biệt cho nhận dạng hình ảnh, xử lý ngôn ngữ tự nhiên, dịch thuật tự động. AI APIs giúp developer tích hợp khả năng AI vào ứng dụng mà không cần xây dựng mô hình từ đầu.

Kết luận: API là nền tảng kết nối trong thế giới phần mềm hiện đại. Hiểu về API — đặc biệt là REST API — là kỹ năng thiết yếu cho bất kỳ ai làm việc trong lĩnh vực công nghệ. Dù bạn là developer xây dựng ứng dụng, marketer tích hợp công cụ, hay doanh nghiệp muốn kết nối hệ thống, API chính là chiếc cầu nối giúp mọi thứ hoạt động cùng nhau.

Nguồn & Tài liệu tham khảo
1. [MDN Web Docs — HTTP Overview](https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview) 2. [RFC 7231 — HTTP/1.1 Semantics and Content](https://datatracker.ietf.org/doc/html/rfc7231) 3. [OpenAPI Specification](https://spec.openapis.org/oas/latest.html) 4. [GraphQL — Official Documentation](https://graphql.org/learn/) 5. [Google Cloud — API Design Guide](https://cloud.google.com/apis/design)

Câu hỏi thường gặp

API là gì và hoạt động như thế nào?
API (Application Programming Interface) là tập hợp quy tắc cho phép các ứng dụng phần mềm giao tiếp với nhau. API hoạt động như 'người trung gian' — nhận request từ client, chuyển đến server xử lý, rồi trả kết quả về cho client.
REST API và GraphQL khác nhau như thế nào?
REST API sử dụng các endpoint URL cố định với phương thức HTTP (GET, POST, PUT, DELETE), trả về dữ liệu cố định. GraphQL dùng một endpoint duy nhất, cho phép client chỉ định chính xác dữ liệu cần lấy, tránh over-fetching và under-fetching.
API Key và OAuth 2.0 khác nhau như thế nào?
API Key là chuỗi ký tự đơn giản để xác minh danh tính client. OAuth 2.0 là giao thức phức tạp hơn cho phép ủy quyền truy cập mà không cần chia sẻ mật khẩu — thường dùng cho đăng nhập bằng Google/Facebook.
Tại sao cần rate limiting cho API?
Rate limiting giới hạn số request mỗi client trong khoảng thời gian nhất định, bảo vệ server khỏi quá tải và lạm dụng. Thường giới hạn 1000-10000 request/phút tùy loại API, trả về HTTP 429 khi vượt giới hạn.
Proxy có liên quan gì đến API?
Proxy giúp phân tán API request qua nhiều IP để tránh bị chặn khi gọi API tần suất cao. API Gateway hoạt động như reverse proxy cho microservices. Các nhà cung cấp proxy như TMProxy cũng cung cấp API để quản lý proxy programmatically.

article.share