Explore all courses in this category.
Explore all courses in this category.
Nguyễn Đình Cường
0 comment
09 Nov, 2026
API là cầu nối giữa giao diện và máy chủ, nên câu hỏi về REST xuất hiện ở hầu hết vị trí backend và fullstack. Người phỏng vấn muốn biết bạn có thiết kế endpoint rõ ràng, dùng đúng phương thức và mã trạng thái, và nghĩ đến bảo mật hay không.
REST là phong cách kiến trúc để thiết kế dịch vụ web xoay quanh tài nguyên, mỗi tài nguyên có một địa chỉ (URL) và được thao tác bằng các phương thức HTTP chuẩn. Các nguyên tắc thường được nhắc là: máy khách và máy chủ tách biệt, không lưu trạng thái giữa các request (stateless), có thể cache, và giao diện thống nhất.
| Phương thức | Mục đích | Idempotent |
|---|---|---|
| GET | Lấy tài nguyên | Có |
| POST | Tạo mới hoặc thực hiện hành động | Không |
| PUT | Thay thế toàn bộ tài nguyên | Có |
| PATCH | Cập nhật một phần | Thường không bảo đảm |
| DELETE | Xóa tài nguyên | Có |
Idempotent nghĩa là gọi một lần hay nhiều lần cho cùng một kết quả trạng thái. Điều này quan trọng khi mạng lỗi và client phải thử lại.
Dùng danh từ số nhiều cho tài nguyên, để phương thức HTTP biểu thị hành động:
GET /api/posts danh sách bài viếtPOST /api/posts tạo bài viếtGET /api/posts/42 chi tiết bài viếtPATCH /api/posts/42 cập nhật một phầnDELETE /api/posts/42 xóaGET /api/posts/42/comments bình luận của bài viếtTránh các đường dẫn kiểu /getPost hoặc /deletePost vì động từ đã nằm ở phương thức HTTP.
{ "error": { "code": "VALIDATION_FAILED", "message": "Email không hợp lệ", "fields": { "email": ["Định dạng không đúng"] } }}Danh sách lớn cần phân trang để tránh trả về quá nhiều dữ liệu. Có hai cách thường gặp: theo trang (?page=2&per_page=20) đơn giản dễ dùng, và theo con trỏ (cursor) ổn định hơn với dữ liệu thay đổi liên tục. Lọc và sắp xếp qua tham số truy vấn như ?status=active&sort=-created_at.
Authorization: Bearer ...; không lưu trạng thái nhưng khó thu hồi sớm nếu không có cơ chế bổ sung.Luôn dùng HTTPS, kiểm tra quyền ở phía máy chủ cho từng tài nguyên, và không tin dữ liệu từ client.
Khi API thay đổi theo cách không tương thích, dùng phiên bản như /api/v1/ để không phá ứng dụng cũ. Tài liệu hóa bằng OpenAPI/Swagger giúp người dùng API và nhóm kiểm thử nắm hợp đồng chính xác.
Với câu hỏi thiết kế như "thiết kế API cho ứng dụng đặt phòng", hãy bắt đầu bằng tài nguyên chính, liệt kê endpoint, nói về xác thực và phân quyền, rồi mới đến phân trang, lỗi và phiên bản hóa. Đi theo thứ tự đó giúp câu trả lời có cấu trúc và không bị sót ý.
Để gây ấn tượng, hãy chuẩn bị một API bạn tự thiết kế, nêu rõ vì sao chọn mã trạng thái, cách xác thực và xử lý lỗi. Một câu chuyện cụ thể luôn thuyết phục hơn danh sách định nghĩa.
Bạn có thể luyện thiết kế và xây dựng API qua các khóa backend tại codebem.com.
Nguyễn Đình Cường
0 comment