他のクライアントからの変更や修正を監視したい REST リソースがある場合、最善の (そして最も RESTful な) 方法は何ですか?
そうするために私が持っていた1つのアイデアは、リソースが(まだ)存在しない場合にすぐに戻るのではなく、接続を開いたままにする特定のリソースを提供することです。たとえば、次のリソースがあるとします。
/game/17/playerToMove
このリソースの「GET」は、対戦相手が動く番だと教えてくれるかもしれません。このリソースを継続的にポーリングして自分の番がいつ移動するかを確認するのではなく、移動番号 (たとえば 5) をメモして、次の移動を取得しようとする場合があります。
/game/17/move/5
「通常の」REST モデルでは、この URL に対する GET リクエストは 404 (見つかりません) エラーを返すようです。ただし、代わりに、対戦相手が彼の動きをプレイするまでサーバーが接続を開いたままにした場合、つまり:
PUT /game/17/move/5
サーバーは、対戦相手がそのリソースに PUT したコンテンツを返すことができます。これにより、必要なデータが得られるだけでなく、対戦相手がポーリングを必要とせずに移動したときの一種の通知も得られます。
この種のスキームは RESTful ですか? それとも、ある種の REST 原則に違反していますか?