🚫 6 sai lầm khi thiết kế API mà mình sẽ không bao giờ lặp lại nữa 🚫
Trong quá trình phát triển hệ thống, mình từng vấp phải không ít "bài học đắt giá" khi thiết kế API. Dưới đây là 6 điểm mình từng làm sai và rút ra được bài học quý giá:
1️⃣ Phản hồi lỗi quá chung chung
🔹 "400 Bad Request" không giúp ai debug được gì
🔹 Thiếu thông tin chi tiết (code, message, details, requestId) gây khó khăn khi support
2️⃣ Chỉ suy nghĩ theo hướng resource (CRUD)
🔹 Không phải mọi thứ đều phù hợp với CRUD
🔹 Nhiều thao tác nghiệp vụ vượt ra khỏi ranh giới của resource
🔹 Dùng verb như /orders/123/cancel đôi khi hợp lý hơn PATCH
3️⃣ Version nằm trong URL
🔹 /v1/users nhanh chóng trở thành món nợ kỹ thuật
🔹 Gây khó khăn cho hypermedia và caching
🔹 Giải pháp tốt hơn: Dùng Accept header để versioning
4️⃣ Phân trang không dùng cursor
🔹 Offset dễ gây lỗi khi có concurrent write
🔹 Không hỗ trợ tốt cho scale lớn
🔹 Cursor-based pagination là bắt buộc, không phải tùy chọn
5️⃣ Mọi thứ đều đồng bộ (synchronous)
🔹 Chặn client cho tác vụ lâu → timeout là điều chắc chắn
🔹 Không có retry hoặc idempotency → dễ lỗi hoặc lặp lại
🔹 Các thao tác lâu nên dùng async pattern
6️⃣ Bỏ qua cache headers
🔹 Không dùng ETag hoặc If-None-Match → tốn băng thông
🔹 Không có chỉ dẫn cache rõ ràng → hành vi không nhất quán
🔹 Cache đúng cách giúp giảm tải hệ thống hơn 60%!
💡 Những lỗi này tuy nhỏ nhưng ảnh hưởng cực lớn đến hiệu năng, trải nghiệm người dùng và khả năng mở rộng hệ thống.
👉 Bạn đã từng vấp phải lỗi nào trong số này chưa? Hãy chia sẻ thêm nhé!
#API #backend #techtips #systemdesign #APIDesign #developerlife