Para ejecutar el ejemplo hay que tener instalado Grails 1.3.1, descargarse el ejemplo , descomprimir el archivo y ejecutar en el directorio raíz del mismo:
grails run-app
No lo he complicado mucho para que el que quiera arrancar con Grails y REST se lie lo menos posible.
La aplicación consta de tres recursos, Usuario, Voto y Asunto. Se puede probar usando el programa rest-client o el Addon de Firefox ‘Poster’.
Recurso ‘Usuario’
- Si se quieren consultar los usuarios se debe hacer una petición
GET http://localhost:8080/GrailsRestExample/users?max=20&offset=2
Donde max es el número máximo de resultados devueltos (por defecto 20) y offset es el índice a partir del que se desea obtener el primer resultado (por defecto 0)
- Para obtener la información de un usuario concreto:
GET http://localhost:8080/GrailsRestExample/users/${idUsuario}
- Para borrar un usuario se debe hacer una petición:
DELETE http://localhost:8080/GrailsRestExample/users/${idUsuario}
- Para actualizar un usuario existente habría que hacer una petición:
PUT http://localhost:8080/GrailsRestExample/users/${idUsuario}
Enviando una representación JSON del usuario que se desee crear con las siguientes características:
{"username":"username", "email":"email@gruposp2p.org", "dateOfBird":"01-02-2003","enabled":"true"}
- Para crear un nuevo usuario habría que hacer una petición
POST http://localhost:8080/GrailsRestExample/users
Enviando una representación JSON del usuario que se desee crear con las siguientes características:
{"username":"username", "email":"email@gruposp2p.org", "dateOfBird":"01-02-2003","enabled":"true"}
Recurso ‘Asunto’
- Si se quieren consultar los Asuntos dados de alta en el sistema se debe hacer una petición
GET http://localhost:8080/GrailsRestExample/subjects?max=20&offset=2
Donde max es el número máximo de resultados devueltos(por defecto 20) y offset es el índice a partir del que se desea obtener el primer resultado (por defecto 0)
- Para obtener la información de un asunto concreto:
GET http://localhost:8080/GrailsRestExample/subjects/${idSubject}
- Para actualizar un asunto existente habría que hacer una petición:
PUT http://localhost:8080/GrailsRestExample/subjects/${idSubject}
Enviando una representación JSON del asunto que se desee crear que tenga siguientes características:
{"content":"Contenido del asunto 40","name":"Nombre del asunto40"}
DELETE http://localhost:8080/GrailsRestExample/subjects/${idSubject}
Recursos ‘Asuntos’ asociados a un determinado recurso ‘Usuario’
- Para obtener todos los asuntos generados por un usuario concreto
GET http://localhost:8080/GrailsRestExample/users/${idUsuario}/subjects/
- Para generar un nuevo asunto asociado al usuario ${idUsuario} habría que hacer una petición
POST http://localhost:8080/GrailsRestExample/users/${idUsuario}/subjects/
Enviando una representación JSON del asunto que se desee crear con las siguientes características:
{"content":"Contenido del asunto 40","name":"Nombre del asunto40"}
Recurso ‘Voto’
- Si se quieren consultar todos los Votos dados de alta en el sistema se debería hacer una petición
GET http://localhost:8080/GrailsRestExample/votes?max=20&offset=2
Donde max es el número máximo de resultados devueltos (por defecto 20) y offset es el índice a partir del que se desea obtener el primer resultado (por defecto 0)
- Si se quiere consultar un voto concreto
GET http://localhost:8080/GrailsRestExample/votes/${idVote}
- Si se quiere modificar un voto habrá que hacer una petición
PUT http://localhost:8080/GrailsRestExample/votes/${idVote}
Enviando una representación JSON del asunto que se desee crear que tenga siguientes características:
{"value":"valor del voto www"}
DELETE http://localhost:8080/GrailsRestExample/votes/${idVote}
Votos asociados a un determinado usuario
- Para obtener todos los votos generados por el usuario ${idUsuario}
GET http://localhost:8080/GrailsRestExample/users/${idUsuario}/votes/
- Para generar un nuevo voto sobre el asunto ${idSubject} asociado al usuario ${idUsuario} habría que hacer una petición
POST http://localhost:8080/GrailsRestExample/users/${idUsuario}/subjects/${idSubject}
Con una representación JSON del voto que tuviera las siguientes características:
{"value":"valor del voto www"}
Votos asociados a un determinado asunto
GET http://localhost:8080/GrailsRestExample/subjects/{idSubject}/votes
Votos asociados a un determinado asunto y a un determinado usuario
GET http://localhost:8080/GrailsRestExample/users/${idUsuario}/subjects/{idSubject}/votes
En el siguiente artículo explicaré cómo usar las nueva clase TableCell que viene con GWT 2.1 utilizando los datos disponibles en estos servicios REST, la aplicación de acceso para Android la dejaré para el final de esta serie.
Es importante quedarse con los siguientes puntos:
- Existen formas de securizar los recursos.
- El desarrollo está hecho en Grails, pero utilizando principios REST pueden crearse servicios, independientes de lenguaje de programación y plataforma, accesibles a través de Internet.
- Gracias a esta técnica se separa completamente la interfaz de usuario del servicio.
- Si se desea que dos partes intercambien información a través de Internet la mejor forma de conseguirlo es empezando definiendo las interfaces REST de los recursos que se desean compartir.