Trước hết, hành vi phụ thuộc vào lệnh gọi DELETE được trả về làm mã phản hồi của nó.
Nếu DELETE trả lại 200 - OK
hoặc 204 - No Content
thì khách hàng sẽ nhận được 404 - Not Found
trong lần gọi tiếp theo để nhận được GET. Đó là vì 202 và 204 có nghĩa là tài nguyên đã bị xóa ngay lập tức.
Tuy nhiên nếu DELETE trả về 202 - Accepted
, có khả năng khách hàng sẽ có thể GET thành công tài nguyên trong một thời gian sau đó. Đó là bởi vì 202 có nghĩa là tài nguyên đã được đánh dấu để xóa, nhưng không nhất thiết phải làm sạch ngay lập tức.
Thứ hai, nếu có bộ nhớ cache liên quan, hành vi phải được xây dựng để phù hợp với những gì sẽ xảy ra nếu không có bộ nhớ cache. DELETE thành công sẽ luôn dẫn đến việc xóa cả hai khỏi nguồn gốc thực của dữ liệu ngoài các bản sao được lưu trong bộ nhớ cache.
Nguồn
2012-05-24 16:12:55
Nếu bạn vừa xóa mục, tại sao bạn lại cố gắng "lấy lại" nó? Nó sẽ không tồn tại. Có lẽ tôi đang thiếu một cái gì đó hoặc câu hỏi không rõ ràng. –
@Brent Pabst: Xem xét các liên kết ví dụ trong ứng dụng giao diện người dùng trong đó xóa xảy ra trong cửa sổ bật lên nhưng liên kết GET nằm trong trang mở và không được cập nhật hoặc chuyển bằng thư và người dùng chèn chúng vào thanh địa chỉ trình duyệt ngay giữa xóa vv Điều này là tùy thuộc vào bộ nhớ cache! Ý tưởng là, nếu mặt hàng đó không còn nữa thì GET nên hoạt động như thế nào. Vô hiệu hóa TẤT CẢ bộ nhớ cache? Có thể chấp nhận một số bộ nhớ cache không? Cách tiếp cận REST cho tất cả điều này là gì? – JohnDoDo
GET thứ hai sẽ tự nhiên trả về mã HTTP '404 Not Found'. Caching là một vấn đề khác mà tôi sẽ cung cấp câu trả lời kỳ diệu mờ đục: "nó phụ thuộc". Nhưng nếu có * là * một GET thứ hai, có vẻ như khá rõ ràng rằng nó sẽ sản xuất một 404? –