Nếu có tài nguyên REST mà tôi muốn theo dõi các thay đổi hoặc sửa đổi từ các ứng dụng khách khác, cách tốt nhất (và hầu hết là RESTful) là làm như thế nào?Cách RESTful để theo dõi một tài nguyên REST cho các thay đổi là gì?
Một ý tưởng tôi đã có để làm như vậy là cung cấp các tài nguyên cụ thể sẽ giữ kết nối mở thay vì quay trở lại ngay lập tức nếu tài nguyên chưa tồn tại. Ví dụ: được cung cấp tài nguyên:
/game/17/playerToMove
một "GET" trên tài nguyên này có thể cho tôi biết đến lượt của đối thủ di chuyển. Thay vì liên tục bỏ phiếu tài nguyên này để tìm hiểu khi đến lượt tôi phải di chuyển, tôi có thể lưu ý số lượng di chuyển (ví dụ 5) và cố gắng để lấy lại di chuyển tiếp theo:
/game/17/move/5
Trong một mô hình còn lại "bình thường", nó dường như yêu cầu GET cho URL này sẽ trả về lỗi 404 (không tìm thấy). Tuy nhiên, nếu thay vào đó, máy chủ sẽ giữ kết nối mở cho đến khi đối thủ của tôi thực hiện di chuyển của mình, nghĩa là:
thì máy chủ có thể trả lại nội dung mà đối thủ PUT của tôi vào tài nguyên đó. Cả hai điều này sẽ cung cấp cho tôi dữ liệu tôi cần, cũng như một loại thông báo khi đối thủ của tôi đã di chuyển mà không yêu cầu bỏ phiếu.
Đây có phải là loại lược đồ RESTful không? Hoặc nó vi phạm một số loại nguyên tắc REST?
"Cách _rest_ để làm điều này là gì, Scrappy?" –
Bạn có thể sử dụng tính năng bỏ phiếu dài hoặc kết hợp REST với dịch vụ websocket, gửi các sự kiện tới máy khách. – inf3rno