REST dùng các HTTP method chuẩn làm động từ tác động lên tài nguyên. Cách ánh xạ thường gặp sang CRUD (Create, Read, Update, Delete):
REST dùng các HTTP method chuẩn làm động từ tác động lên tài nguyên. Cách ánh xạ thường gặp sang CRUD (Create, Read, Update, Delete):
| CRUD | Method | Dùng khi |
|---|
| Create | POST | Thêm tài nguyên mới vào một collection |
| Read | GET | Lấy một tài nguyên hoặc danh sách |
| Update (toàn bộ) | PUT | Thay thế toàn bộ tài nguyên |
| Update (một phần) | PATCH | Sửa một vài trường |
| Delete | DELETE | Xoá tài nguyên |
POST /users HTTP/1.1
Content-Type: application/json
{ "name": "Ann", "email": "[email protected]" }
HTTP/1.1 201 Created
Location: /users/42
{ "id": 42, "name": "Ann", "email": "[email protected]" }
PUT /users/42 gửi toàn bộ representation và thay thế nó; PATCH /users/42 chỉ gửi những trường cần đổi (vd. { "email": "[email protected]" }).
Đây là hai thuộc tính khác nhau:
GET, HEAD, OPTIONS là safe.GET, PUT, DELETE, HEAD là idempotent.Method Safe? Idempotent?
GET có có
HEAD có có
PUT không có (thay bằng cùng body hai lần = cùng kết quả)
DELETE không có (xoá hai lần = vẫn đã xoá)
PATCH không không* (tuỳ patch; không đảm bảo)
POST không không (POST hai lần thường tạo ra hai tài nguyên)
Người phỏng vấn hỏi câu này để xem bạn hiểu ngữ nghĩa HTTP đủ sâu để xây API đáng tin cậy hay không. Phân biệt safe/idempotent không phải lý thuyết suông: nó quy định trực tiếp những gì client, proxy và CDN được phép làm. Method safe có thể cache và prefetch thoải mái; method idempotent có thể được tự động retry sau khi network timeout mà không sợ nhân đôi side effect — đó là lý do client retry PUT hay DELETE an toàn nhưng phải cẩn thận khi retry POST (có thể tạo hai order). Lỗi kinh điển là dùng GET để gây side effect (vd. GET /users/42/delete), làm hỏng caching và khiến crawler vô tình sửa dữ liệu. Chọn đúng method — và tôn trọng hợp đồng safe/idempotent của nó — chính là điều làm API dễ đoán và an toàn để xây tooling xung quanh.
Thư viện câu hỏi phỏng vấn IT với đáp án chi tiết — từ Junior đến Senior.
Ủng hộ