Cơ bảnKiến thức cơ bản

API là gì? REST API và cách hoạt động đơn giản

8 phút đọc18 lượt xem
#api là gì#rest api#gọi api#api cho người mới#http methods

API là gì? REST API và cách hoạt động đơn giản

Mỗi khi bạn mở app thời tiết và thấy nhiệt độ hiện tại, hay đăng nhập bằng Google — phía sau đó là API đang làm việc. Hiểu API giúp bạn hiểu cách các ứng dụng hiện đại hoạt động.

API là gì? Giải thích bằng ví dụ thực tế

Hãy tưởng tượng bạn vào nhà hàng: Bạn gọi phục vụ (API), đưa yêu cầu. Phục vụ chuyển yêu cầu đến bếp (Server). Bếp làm xong, phục vụ mang ra cho bạn.

API (Application Programming Interface) là tập hợp các quy tắc cho phép hai phần mềm giao tiếp với nhau.

Tại sao API quan trọng?

  • App bản đồ → Google Maps API
  • "Đăng nhập bằng Google" → Google OAuth API
  • App thời tiết → OpenWeatherMap API
  • Thanh toán online → VNPay API, MoMo API

REST API — Loại API phổ biến nhất (~80%)

HTTP Methods

MethodMục đíchVí dụ
GETLấy dữ liệuLấy danh sách bài viết
POSTTạo dữ liệu mớiĐăng ký tài khoản
PUT/PATCHCập nhật dữ liệuSửa thông tin profile
DELETEXóa dữ liệuXóa bài đăng

HTTP Status Codes

Ý nghĩa
200 OKThành công
201 CreatedTạo mới thành công
400 Bad RequestYêu cầu sai
401 UnauthorizedChưa đăng nhập
404 Not FoundKhông tìm thấy
500 Server ErrorLỗi phía server

Gọi API bằng JavaScript

async function layDanhSachBaiViet() {
  try {
    const response = await fetch('https://jsonplaceholder.typicode.com/posts');
    if (!response.ok) throw new Error(`Lỗi HTTP: ${response.status}`);
    const baiViet = await response.json();
    console.log(`Tổng số bài viết: ${baiViet.length}`);
  } catch (error) {
    console.error("Lỗi khi gọi API:", error);
  }
}

Gọi API bằng Python

import requests

def lay_thong_tin_nguoi_dung(user_id):
    url = f"https://jsonplaceholder.typicode.com/users/{user_id}"
    try:
        response = requests.get(url, timeout=10)
        response.raise_for_status()
        user = response.json()
        print(f"Tên: {user['name']}")
        return user
    except requests.RequestException as e:
        print(f"Lỗi: {e}")
        return None

Bảo mật API

# ĐÚNG — Dùng biến môi trường
import os
api_key = os.getenv("MY_API_KEY")
# Tuyệt đối không đưa API key lên GitHub!

GraphQL vs REST API

Ngoài REST, GraphQL là kiểu API ngày càng phổ biến — được Facebook phát triển và GitHub API v4 sử dụng.

Tiêu chíRESTGraphQL
Cú pháp queryNhiều endpoint riêng biệtMột endpoint duy nhất, query linh hoạt
Số requestNhiều request cho nhiều tài nguyênMột request lấy nhiều dữ liệu
Linh hoạtServer quy định dữ liệu trả vềClient chọn đúng trường cần dùng
Phổ biếnRất phổ biến (~80% dự án)Đang tăng, phổ biến ở công ty lớn
Phù hợp choCRUD đơn giản, API công khaiApp phức tạp, nhiều loại client

Với người mới học, hãy nắm vững REST trước. GraphQL sẽ học sau khi đã hiểu API cơ bản.

API Authentication phổ biến

Hầu hết API yêu cầu xác thực trước khi cho phép truy cập dữ liệu. Có 3 phương thức phổ biến:

  • API Key: Đơn giản nhất — thêm một chuỗi key vào header hoặc URL. Dễ dùng nhưng ít bảo mật hơn, thường dùng cho API công khai.
  • Bearer Token / JWT: Phổ biến nhất hiện nay. Sau khi đăng nhập, server trả về một token. Client gửi token đó trong mỗi request tiếp theo.
  • OAuth 2.0: Chuẩn xác thực cho phép đăng nhập bằng Google, Facebook, GitHub. Phức tạp hơn nhưng an toàn và tiện lợi cho người dùng.

Ví dụ gửi Bearer Token trong header:

GET /api/profile HTTP/1.1
Host: api.example.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...

Lưu ý: Không bao giờ lưu token hoặc API key trực tiếp trong code — luôn dùng biến môi trường hoặc secret manager.

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

SOAP khác REST như thế nào?

SOAP là giao thức API cũ hơn, dùng XML, nặng và phức tạp hơn REST. REST dùng JSON, nhẹ và linh hoạt hơn. Hiện nay hầu hết dự án mới đều dùng REST thay vì SOAP. SOAP vẫn tồn tại trong các hệ thống tài chính, ngân hàng cũ.

GraphQL có thay thế REST không?

Không hoàn toàn. GraphQL phù hợp với ứng dụng phức tạp có nhiều loại dữ liệu liên kết. REST vẫn là lựa chọn tốt cho CRUD đơn giản và API công khai. Nhiều công ty dùng cả hai tùy trường hợp.

Kết luận

API là xương sống của mọi ứng dụng web hiện đại. Hiểu REST API và biết cách gọi API bằng JavaScript hoặc Python sẽ mở ra rất nhiều cơ hội trong lập trình.

Về tác giả

Ảnh đại diện tác giả Kenji — họa tiết hình học

Kenji

Kỹ sư phần mềm full-stack (Web), hơn 5 năm kinh nghiệm thực tế

  • Python
  • DB
  • Hạ tầng
  • Đào tạo & cố vấn
  • AI

Làm việc cùng đồng nghiệp người Việt, tôi thấy thiếu tài liệu kỹ thuật rõ ràng bằng tiếng Việt. codeahoc là nơi tôi chia sẻ theo hướng thực tế, dễ áp dụng.

Nguyên tắc nội dung

  • Ưu tiên nguồn gốc và góc nhìn từ thực tế triển khai.
  • Nếu có sai sót, nội dung sẽ được cập nhật và sửa kịp thời.

Khóa học liên quan

The Complete Web Developer Bootcamp

Học HTML, CSS, JavaScript, React, Node.js toàn diện.

4.7
Xem khóa học →

CSS - The Complete Guide (incl. Flexbox, Grid & Sass)

CSS nâng cao: Flexbox, Grid, animations, responsive design.

4.6
Xem khóa học →

*Đây là liên kết liên kết (affiliate link). Chúng tôi có thể nhận hoa hồng nếu bạn mua khóa học qua liên kết này.