S'il y a une ressource REST que je veux surveiller pour des changements ou des modifications d'autres clients, quelle est la meilleure façon (et la plus RESTful) de le faire? Une idée que j'ai eu pour le faire est de fournir des ressources spécifiques qui garderont la connexion ouverte plutôt que de revenir immédiatement si la ressource n'existe pas (encore). Par exemple, compte tenu de la ressource:Qu'est-ce qu'un moyen RESTful de surveiller une ressource REST pour les changements?
/game/17/playerToMove
un « GET » sur cette ressource pourrait me dire que c'est le tour de mon adversaire de se déplacer. Au lieu de vote sans cesse cette ressource pour savoir quand il est mon tour de bouger, je pourrais noter le numéro de déplacement (par exemple 5) et tenter de récupérer le mouvement suivant:
/game/17/move/5
Dans un modèle « normal » REST, il semble qu'une requête GET pour cette URL renverrait une erreur 404 (non trouvée). Toutefois, si au contraire, le serveur a gardé la connexion ouverte jusqu'à ce que mon adversaire a joué son mouvement, i.e. .:
PUT /game/17/move/5
le serveur pourrait retourner le contenu que mon adversaire mise en cette ressource. Cela me fournirait à la fois les données dont j'ai besoin, ainsi qu'une sorte de notification pour savoir quand mon adversaire s'est déplacé sans avoir besoin d'interroger.
Est-ce que ce genre de schéma RESTful? Ou est-ce que cela viole une sorte de principe REST?
"Quelle est la façon _rest_ de faire cela, Scrappy?" –
Vous pouvez utiliser une interrogation longue ou combiner REST avec un service Websocket, qui envoie les événements au client. – inf3rno