REST

REST
Información sobre la plantilla
Imagen de rest.JPG
Concepto:REST no es un protocolo ni un formato, es más bien un estilo de arquitectura, mimetiza el estilo de arquitectura original de la Web.

REST, (acrónimo REpresentational State Transfer) es una arquitectura de servicios Web, para sistemas distribuidos como la World Wide Web. El término fue acuñado por Roy Fielding en el 2000.

REST no es un protocolo ni un formato, es más bien un estilo de arquitectura, mimetiza el estilo de arquitectura original de la Web.

Conceptos

Dentro de esta arquitectura, un componente lee o modifica un recurso utilizando una representación e un de dicho recurso. Un recurso es una cosa nombrable, que puede cambiar con el tiempo. Una representación es una secuencia de octetos(bytes), eventualmente acompañada de metadatos(secuencia de nombre/valor). Un componente es un actor, y está conectado a otros componentes y recursos a través de canales que permiten la interacción sin estado.

La aplicación de esta arquitectura en la Web se basa en algunos principios simples:

  • La URI es importante: conocer la URI debe ser suficiente para nombrar e identificar un recurso
  • HTTP provee de todas las operaciones escenciales para manejar recursos (GET, POST, PUT, y DELETE).
  • Cada operación es independiente: no hay estado.
  • Utilización de estándares: son a menudo utilizados HTML o XML ya que permiten la comunicación con otros recursos y aseguran así la navegación dentro de la aplicación REST.

Descripción de REST

Éste estilo arquitectural no está limitado al desarrollo de aplicaciones para el uso directo por personas. Actualmente se está utilizando más y más en el desarrollo de arquitecturas orientadas a servicios utilizando servicios Web destinados a la comunicación entre máquinas. Rest supone una alternativa al estilo arquitectural RPC.

Las respuestas de los requests a diferencia de SOAP y XML-RPC no han de ser obligatoriamente XML. Las respuestas en formato JSON u objetos de Java Serializados son perfectamente aceptables.

Ventajas

La tésis de Roy Fielding relaciona las muchas ventajas con respecto a los otros estilos de arquitectura de aplicaciones web. Entre otras citamos:

  • La aplicación es más simple de mantener, los vínculos son más estructurados y su forma es más común. Es también mas común que los vínculos sean el modo de llevar el estado de una aplicación Web.
  • A ausencia de gestión de estado de cliente en el servidor conduce un consumo más eficiente de la memoria, una mayor simplificación de la funcionalidad y una capacidad más grande de gestionar un grán número de requests al mismo tiempo.
  • La ausencia de la gestión de estado del cliente en el servidor permite implementar un balance de carga más simple: una sesión del cliente no tiene que ser mantenida por un servidor en particular, ni propagada a otros servidores. Ésta permite también una mejor evolución y tolerancia a fallos.
  • La utilización de protocolo HTTP y todas las partes de sus encabezamientos(la mayor parte de la gramática HTTP).

Inconvenientes

El envío de datos de un formulario HTML usando un método como DELETE no está comprendida en todos los navegadores. Para aliviar este problema se emula el comportamiento usando POST.

Software

  • Python : RIP
  • Django : Piston
  • Ruby On Rails : Rails
  • Java : Restlet
  • Java : especificación de RESTful web services para Java (JAX-RS) JSR311
  • Java : jersey, implementación de referencia de JSR311
  • Java : Jboss RESTEasy
  • PHP : Symfony
  • .NET 3.5 : ADO.NET Data Services : (ex-Astoria)

Fuentes