Cómo administrar el estado en REST


Supongo que esta pregunta le sonará familiar, pero soy otro programador desconcertado por el RESTO.

Tengo una aplicación web tradicional que va de StateA a StateB y así sucesivamente. Si el usuario va a (URL de) StateB, quiero asegurarme de que ha visitado StateA antes. Tradicionalmente, hago esto usando el estado de la sesión.

Dado que el estado de la sesión no está permitido en REST, ¿cómo logro esto?

Author: Armand Delessert, 2010-04-15

1 answers

Hay 2 respuestas de DESCANSO para esto, dependiendo de lo que específicamente esté tratando de hacer.

Si realmente está tratando de administrar el estado basado en solicitudes (como cuando un usuario está trabajando a través de un asistente multipantalla o algún otro flujo de trabajo basado en la navegación), entonces la respuesta del RESTO es que el estado debe enviarse de un lado a otro con cada solicitud/respuesta (usando algo como un campo de texto oculto, una cadena de consulta o datos POST almacenados en un formulario). Esta es una implementación de Martin Fowler Patrón de diseño del" Estado del cliente " (detallado en su totalidad en su libro, Patrones de Arquitectura de Aplicaciones Empresariales ; vea aquí para una referencia).

Si, por otro lado, está tratando de administrar algún tipo de objeto nuevo en el servidor, como un carrito de compras, entonces la respuesta del RESTO es que en realidad está creando una nueva entidad a la que se puede acceder como cualquier otra mediante una URL directa. Si almacena o no esta nueva entidad en una base de datos o en la memoria de la aplicación (como un objeto de sesión tradicional) depende de usted, pero, de cualquier manera, el nuevo objeto es menos sobre "estado" en el servidor y más sobre la creación de una nueva entidad para que el usuario interactúe.

 50
Author: KP Taylor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-04-15 03:19:47