Sie sind auf Seite 1von 6

REST (REpresentational State Transfer) Transferencia de Estado Representacional. REST es un estilo arquitectnico ms que un diseo especfico o implementacin concreta.

En el ncleo de esa arquitectura se encuentran los recursos que pueden ser accedidos e identificados a travs de una URI. Los clientes y servidores pueden manipular estos recursos mediante la interfaz HTTP intercambiando representaciones de estos recursos (tpicamente mediante archivos XML o en nuestro caso representaciones con JSON) y efectuando un conjunto de operaciones sobre los mismos. En concreto los recursos son representaciones de datos los cuales se manipulan e intercambian entre clientes y servidores mediante mensajes HTTP y sus operaciones (GET,POST,DELETE, etc). Tomando como referencia el MVC que utiliza Rails como arquitectura los recursos son la combinacin de los models con su interfaz web, o sea, se pueden ver como objetos que pueden ser accedidos via mensajes HTTP. REST is an architectural style, not a protocol or an implementation. REST has some core principles, but in the end, it's an abstraction, not a specific implementation.

Arquitectura REST a alto nivel.

Caractersticas de una arquitectura REST Arquitectura cliente-servidor Los clientes acceden a los recursos a travs de representaciones de los mismos exportadas por el servidor, no directamente a ellos. Arquitectura en capas Arquitectura sin estado No se tiene informacin del contexto entre transacciones. En cada transaccin debe pasarse toda la informacin necesaria para satisfacer el pedido.

Interaccin cliente-servidor en arquitectura REST

Utilizacin de los mtodos de HTTP Para la manipulacin de los recursos, las operaciones de stos se mapean 1 a 1 con las operaciones de HTTP. Para crear un recurso en el servidor se usa POST. Para traer un recurso desde el servidor se usa GET. Para actualizar un recurso se usa PUT. Para remover o eliminar un recurso se usa DELETE. Ej: pasaje de mensajes HTTP para agregar un usuario Robert en una lista de usuarios, traerlo, actualizar el nombre.
POST /users HTTP/1.1 Host: myserver Content-Type: application/xml <?xml version="1.0"?> <user> <name>Robert</name> </user>

GET /users/Robert HTTP/1.1 Host: myserver Accept: application/xml

PUT /users/Robert HTTP/1.1 Host: myserver Content-Type: application/xml <?xml version="1.0"?> <user> <name>Bob</name> </user>

Usando Rails El modelo MVC de Rails crea un controller por cada model que se genere. Este controller va a tener la siguiente estructura: Suponiendo que se cre un model llamado Users Rails genera algo as:
class UsersController < ApplicationController def index . . . end def show . . . end def new . . . end def create . . . end def edit . . . end def update . . . end def destroy . . . end end

Los mtodos generados en el controller se mapean con las URL solicitadas y los pedidos HTTP. Muchas veces tambin puede ocurrir un overlap de las operaciones con los URL, o sea que varias operaciones se mapean con la misma URL; en estos casos es donde juega un papel fundamental el tipo de request HTTP. Por ejemplo, en el controller anterior los mtodos show, update y destroy corresponden al mismo URL /users/1 (sera cuando se quiere mostrar, actualizar los campos o eliminar el user con id=1). La diferencia es al request HTTP al cual responden. show responde al mtodo GET, update al mtodo PUT y destroy al mtodo DELETE.

Referencias REST http://es.wikipedia.org/wiki/Representational_State_Transfer http://www.ibm.com/developerworks/webservices/library/ws-restful/ http://www.ibm.com/developerworks/library/os-understand-rest-ruby/

JSON (JavaScript Object Notation) JSON es un subconjunto de la notacin literal de objetos de JavaScript, es un formato ligero para el intercambio de datos entre aplicaciones. Es un documento en formato texto. Formato El formato de un archivo JSON consta de slo 2 estructuras de organizacin: una lista ordenada (mapeada en ruby a un array) y una lista de pares nombre/valor (mapeada en ruby a un hash). Un par de nombre/valor, tambin llamado objeto, tiene la siguiente sintaxis:

Una lista ordenada o arreglo, tiene el siguiente formato:

JSON provee de los siguientes data types: - Strings: van entre doble comilla. - Nmeros: van sin ninguna comilla. Soporta notacin cientfica. - Booleanos: true false, sin comillas. - Valor Nulo: null, sin comilla. Equivalente a nil en ruby.

Ejemplo
{ "CEO": "William Hummel", "CFO": "Carlos Work", "Human Resources": [ "Inez Rockwell", "Kay Mcginn", "Larry Conn", "Bessie Wolfe" ], "Research and Development": [ "Norman Reece", "Betty Prosser", "Jeffrey Barclay" ] }

Comparacin con XML JSON


{"menu": { "id": "file", "value": "File", "popup": { "menuitem": [ {"value": "New", "onclick": "CreateNewDoc()"}, {"value": "Open", "onclick": "OpenDoc()"}, {"value": "Close", "onclick": "CloseDoc()"} ] } } }

XML
<menu id="file" <popup> <menuitem <menuitem <menuitem </popup> </menu> value="File"> value="New" onclick="CreateNewDoc()" /> value="Open" onclick="OpenDoc()" /> value="Close" onclick="CloseDoc()" />

Referencias http://www.json.org/json-es.html http://ruby.about.com/od/tasks/a/The-Json-Gem.htm

Das könnte Ihnen auch gefallen