API là “bộ mặt” của hệ thống back-end.
Một API thiết kế kém có thể khiến:
Front-end khó tích hợp
Bug phát sinh liên tục
Version sau phá vỡ version cũ
Trong bài viết này, chúng ta sẽ đi qua các nguyên tắc quan trọng để thiết kế API RESTful đúng chuẩn, áp dụng được ngay cho các dự án thực tế.
REST (Representational State Transfer) không phải là framework, mà là tập hợp các nguyên tắc thiết kế API.
Một API RESTful tốt:
Xoay quanh resource (tài nguyên)
Sử dụng HTTP method đúng nghĩa
Stateless (server không lưu state của client)
Dễ đọc, dễ đoán, dễ mở rộng
👉 HTTP Method đã nói lên hành động, URL chỉ nên mô tả resource.
| Method | Ý nghĩa | Ví dụ |
|---|---|---|
| GET | Lấy dữ liệu | GET /users |
| POST | Tạo mới | POST /users |
| PUT | Cập nhật toàn bộ | PUT /users/1 |
| PATCH | Cập nhật một phần | PATCH /users/1 |
| DELETE | Xóa | DELETE /users/1 |
⚠️ Không dùng GET để thay đổi dữ liệu (tránh bug cache, bảo mật).
Status code giúp client hiểu chuyện gì đang xảy ra mà không cần đọc body.
| Code | Khi nào dùng |
|---|---|
| 200 OK | Request thành công |
| 201 Created | Tạo resource thành công |
| 204 No Content | Thành công nhưng không trả data |
| 400 Bad Request | Dữ liệu client gửi sai |
| 401 Unauthorized | Chưa đăng nhập |
| 403 Forbidden | Không có quyền |
| 404 Not Found | Không tìm thấy resource |
| 422 Unprocessable Entity | Validate lỗi |
| 500 Internal Server Error | Lỗi server |
👉 Ví dụ tạo user:
Tránh phá client cũ
Dễ refactor, nâng cấp API
Cho phép migrate dần
👉 Không bao giờ sửa breaking change trên version cũ.
(trả về 100.000 records)
Response:
JWT (stateless, phổ biến)
OAuth2 (khi tích hợp bên thứ ba)
Session-based (app truyền thống)
Token gửi qua header:
Không gửi token qua query string
Tách rõ:
401: chưa đăng nhập
403: không có quyền
Một request idempotent có thể gọi nhiều lần mà kết quả không đổi.
Ví dụ:
PUT /users/1 → idempotent
POST /orders → không idempotent
👉 Với thanh toán:
Dùng Idempotency-Key để tránh tạo đơn hàng trùng khi retry.
❌ Trả status 200 cho mọi lỗi
❌ URL chứa động từ (/create, /update)
❌ Không version API
❌ Response không nhất quán
❌ Không giới hạn pagination
❌ Log thiếu context khi API lỗi
Một API RESTful tốt sẽ:
Dễ đọc – dễ đoán – dễ mở rộng
Giảm bug giữa front-end & back-end
Tiết kiệm rất nhiều thời gian bảo trì về sau
“API design không chỉ là code chạy được, mà là contract giữa các team.”
Nếu bạn đầu tư thiết kế API ngay từ đầu, hệ thống của bạn sẽ scale mượt hơn rất nhiều khi lớn lên.
You need to login in order to like this post: click here
YOU MIGHT ALSO LIKE