REST API Là Gì?

REST API (Representational State Transfer Application Programming Interface) là một kiểu thiết kế API dựa trên các nguyên tắc của kiến trúc REST. Nó cho phép các ứng dụng giao tiếp với nhau thông qua giao thức HTTP/HTTPS, thường sử dụng định dạng JSON hoặc XML để trao đổi dữ liệu.

Ví dụ thực tế:
Khi dùng app Facebook, ứng dụng không lưu trữ toàn bộ dữ liệu trên điện thoại mà gọi đến server thông qua REST API để lấy thông tin bài viết, hình ảnh.

Các Thành Phần Chính

Resource (Tài Nguyên)

  • Là dữ liệu bạn muốn thao tác (users, products, orders…)

  • Được truy cập qua endpoint (URL)

Ví dụ:
https://api.example.com/users → Danh sách người dùng
https://api.example.com/products/1 → Thông tin sản phẩm có ID=1

HTTP Methods

  • GET: Lấy dữ liệu (ví dụ: load danh sách sản phẩm)

  • POST: Tạo mới (ví dụ: thêm user mới)

  • PUT/PATCH: Cập nhật (PUT thay đổi toàn bộ, PATCH chỉ thay đổi một phần)

  • DELETE: Xóa dữ liệu (ví dụ: xóa một bài viết)

HTTP Status Codes

  • 2xx (Thành công):

    • 200 OK → Request thành công

    • 201 Created → Tạo mới thành công (thường đi kèm POST)

  • 4xx (Lỗi phía client):

    • 400 Bad Request → Request sai cú pháp

    • 401 Unauthorized → Chưa đăng nhập

    • 403 Forbidden → Không có quyền truy cập

    • 404 Not Found → Không tìm thấy tài nguyên

  • 5xx (Lỗi server):

    • 500 Internal Server Error → Lỗi server (database down, code bug…)

Cách Thiết Kế REST API Chuẩn

Quy Tắc Đặt Tên Endpoint

  • Dùng danh từ số nhiều:
    ✅ /users → Lấy danh sách user
    ❌ /getAllUsers → Không RESTful

  • Phân cấp tài nguyên:
    /users/1/orders → Lấy danh sách đơn hàng của user có ID=1

  • Query params để lọc/sắp xếp:
    /products?category=tech&sort=price_desc

Request/Response Format

  • Request Header chứa metadata (token, content-type…):

  • Response Body thường là JSON:

Xác Thực (Authentication)

  • JWT (JSON Web Token):

  • OAuth 2.0: Dùng khi login bằng Google/Facebook

 Các Lưu Ý Khi Làm Việc Với REST API

  • Luôn dùng HTTPS → Bảo mật dữ liệu

  • Validate input → Tránh SQL Injection, XSS

  • Giới hạn request rate → Chống DDoS

  • API versioning → /v1/books/v2/books

Kết Luận

REST API là nền tảng quan trọng để xây dựng hệ thống phân tán. Hiểu rõ cách thiết kế resource, HTTP methods và status code giúp bạn viết API sạch, dễ bảo trì.

About the Author

Tấn Phước

View all author's posts

Leave a Comment

Your email address will not be published. Required fields are marked *

Bài viết khác

Kanban

1. Kanban là gì? Kanban là một phương pháp quản lý công việc trực quan, giúp bạn theo dõi tiến độ từng nhiệm vụ. Kanban bắt nguồn từ Nhật Bản, ban đầu được Toyota dùng để quản lý dây chuyền sản xuất, nhưng ngày nay được áp dụng rộng rãi trong các lĩnh vực như […]

Scum

1. Scrum là gì? Scrum là một khung làm việc (framework) giúp các nhóm làm việc cùng nhau để phát triển sản phẩm một cách linh hoạt và hiệu quả. Nó thuộc phương pháp Agile – đề cao sự thích nghi, cộng tác và cải tiến liên tục trong quá trình làm việc. 2. Các […]

So sánh Realm, Hive, Sqflite, và Drift

So sánh Tiêu chí Realm Hive Sqflite Drift Mức độ phổ biến Tăng nhanh (Meta hỗ trợ) Rất phổ biến Rất phổ biến Trung bình (cộng đồng ổn định) Dễ sử dụng, dễ tích hợp Trung bình (cần setup Realm SDK) ★ Rất dễ (NoSQL, không cần SQL) Trung bình (phải viết SQL tay) Trung […]

Testing

I. Testing là gì? Testing (kiểm thử phần mềm) là quá trình đánh giá một hệ thống phần mềm để xác định xem sản phẩm có đáp ứng các yêu cầu được đặt ra hay không, và nhằm phát hiện lỗi nếu có. Testing là một phần quan trọng trong vòng đời phát triển phần […]

Application security

Ứng dụng bảo mật là gì? Application Security (Bảo mật ứng dụng) là quá trình bảo vệ ứng dụng khỏi các lỗ hổng và tấn công từ các mối đe dọa bên ngoài. Quá trình này bao gồm các biện pháp bảo vệ trong suốt vòng đời phát triển phần mềm (SDLC): từ thiết kế, […]

MVC/MVP

1. Giới thiệu chung Trong phát triển phần mềm, việc tổ chức mã theo mô hình kiến trúc rõ ràng là rất quan trọng để dễ dàng bảo trì, mở rộng và kiểm thử. Hai mô hình phổ biến trong phát triển ứng dụng là: MVC (Model – View – Controller) MVP (Model – View […]