RubyLit - Ruby.del.litoral!
Rest

REST, representational state transfer.

A partir de la versión 1.2 rails introdujo soporte para diseñar aplicación restful. REST es un estilo de arquitectura de software para aplicaciones stateless, su creador es Roy T. Fieldding el cual es uno de los autores principales del protocolo http
Rest es una serie de restricciones impuestas sobre la interacción entre componentes de un sistema, entre otras: Uso de una arquitectura cliente-servidor Comunicación stateless Señalización explícita de la respuesta de ‘cacheo’ Menos software del lado del cliente

Un concepto importante en rest es la existencia de recursos (resources), cada uno de los cuales pueden ser referenciados a través de un identificador global (uri), para manipular estos recursos los componentes de una red (clientes y servidores) lo hacen a través de una interface estandarizada (HTTP por ej.).

Beneficios de usar Rest

  • Buenas prácticas para el programador.
  • Mejor organización y diseño de App.
  • Mejora la escalabilidad del servidor, al no tener necesidad de mantener el estado de la comunicación

Verbos HTTP y CRUD:

HTTP CRUD
POST Create, Update, Delete
GET Read
PUT Create, Update
DELETE Delete

Restful routes

Helper Method GET POST PUT DELETE
client_url(@client) /clients/1[show] x clients/1[update] /clients/1[destroy]
clients_url /clients[index] /clients[create] x x
edit_client_url(@client) /clients/1/edit[edit] x x x
new_client_url /clients/new[new] x x x

Recursos

http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm

http://en.wikipedia.org/wiki/Representational_State_Transfer

http://www.lukeredpath.co.uk/2007/2/2/refactoring-rest-searching-for-an-abstraction

Ejemplos de aplicaciones Restful

http://beast.caboo.se/