martes, 24 de junio de 2008

REST

Representational State Transfer

Roy Fielding's explanation of the meaning of Representational State Transfer

"Representational State Transfer is intended to evoke an image of how a well-designed Web application behaves: a network of web pages (a virtual state-machine), where the user progresses through an application by selecting links (state transitions), resulting in the next page (representing the next state of the application) being transferred to the user and rendered for their use"


Basicamente REpresentational State Transfer que podría ser traducido como Transferencia del Estado de Representación, es un estilo de arquitectura, que pretende aprovechar los factores que han hecho que la WWW sea tan exitosa.

La Web puede verse como una serie de recursos, los cuales contienen información directamente consumible y/o enlaces a otros recursos, cada vez que un recurso es pedido al servidor se está accediendo a un Representación del mismo, y esta representación pone a la aplicación cliente en un estado. Por ejemplo, al pedir la página http://fooserver/products/ (la dirección no existe, es solo de ejemplo) estamos accediendo a un recurso que nos muestra un listado de productos y coloca a la aplicación en el estado A, y si al hacer click sobre el link del producto accedemos a su descripción estaríamos siendo transferidos hacia otro Recurso y por tanto cambiando de estado digamos a un estado B. de allí el nombre de REpresentational State Transfer.

En realidad el concepto no es algo totalmente nuevo, se basa en la idea de cada recurso debe poder ser:

  • Único
  • Accesible
  • Humanamente Legible
  • Independiente del Estado, o agnostico de los Estados Anteriores
  • Bookmarkable
  • Usar sustantivos en los recursos en lugar de verbos. por ejemplo ...products/parts/0012, en lugar de ...products/getPart?Id=0012

Hemos venido usando RESTful Services todo el tiempo, pues es la forma inherente en que funciona la web misma.

Habrá que seguir investignado acerca de REST

No hay comentarios: