Если есть ресурс REST, который я хочу отслеживать на предмет изменений или модификаций других клиентов, каков наилучший (и наиболее RESTful) способ сделать это?
Одна из идей, которые у меня были для этого, заключается в предоставлении конкретных ресурсов, которые будут поддерживать соединение открытым, а не возвращаться немедленно, если ресурс (пока) не существует. Например, с учетом ресурса:
/game/17/playerToMove
«GET» на этом ресурсе может сказать мне, что настала очередь моего оппонента двигаться. Вместо того, чтобы постоянно опрашивать этот ресурс, чтобы узнать, когда наступил мой ход, я мог бы отметить номер хода (скажем, 5) и попытаться получить следующий ход:
/game/17/move/5
В "нормальной" REST-модели кажется, что запрос GET для этого URL вернет ошибку 404 (не найдена). Однако, если вместо этого сервер оставлял соединение открытым до тех пор, пока мой оппонент не выполнил свой ход, т.е.
PUT /game/17/move/5
тогда сервер может вернуть содержимое, которое мой оппонент поместил в этот ресурс. Это обеспечит меня необходимыми данными, а также уведомлением о том, что мой оппонент переехал, не требуя опроса.
Такая схема RESTful? Или это нарушает какой-то принцип REST?