Si hay un recurso REST que deseo monitorear para cambios o modificaciones de otros clientes, ¿cuál es la mejor (y la más RESTANTE) forma de hacerlo?¿Cuál es una forma RESTful de monitorear un recurso REST para cambios?
Una idea que he tenido al hacerlo es proporcionar recursos específicos que mantendrán la conexión abierta en lugar de regresar inmediatamente si el recurso (aún) no existe. Por ejemplo, dado el recurso:
/game/17/playerToMove
un "GET" en este recurso me podría decir que es el turno de mi oponente a moverse. En lugar de continuamente de votación este recurso para saber cuando es mi turno para mover, puede ser que tenga en cuenta el número de movimiento (por ejemplo 5) y tratar de recuperar el movimiento siguiente:
/game/17/move/5
En un modelo "normal" reposo, parece que una solicitud GET para esta URL devolverá un error 404 (no encontrado). Sin embargo, si por el contrario, el servidor mantiene la conexión abierta hasta que mi oponente jugó su movimiento, es decir .:
PUT /game/17/move/5
continuación, el servidor podría devolver el contenido que mi oponente poner en ese recurso. Esto me proporcionaría los datos que necesito, así como también una especie de notificación de cuándo se movió mi oponente sin requerir un sondeo.
¿Es este tipo de esquema RESTful? ¿O viola algún tipo de principio de REST?
"¿Cuál es la manera más extrema de hacer esto, Scrappy?" –
Puede usar sondeo largo, o combinar REST con un servicio websocket, que envía los eventos al cliente. – inf3rno