franfontana / agenda

Administración y registro de contactos - Ejercicio
0 stars 1 forks source link

Publicar servicios de la agenda #4

Open mblasi opened 8 years ago

mblasi commented 8 years ago

Los diferentes servicios de la agenda deben ser publicados como servicios REST.

franfontana commented 8 years ago

Se generó el branch "rest_service" a partir de web_grails para implementar los servicios REST mencionados en la tarea.

franfontana commented 8 years ago

Matias, realice varias pruebas con un proyecto separado para poder implementar los servicios REST mencionados y logre levantar una app con una versión de grails distinta a la del proyecto Agenda (2.3.0). Me estuve guiando con este ejemplo y logre hacer el ensayo con el GET como se observa: https://jolorenz.wordpress.com/2014/02/28/create-a-restservice-api-with-grails-2-3-x-in-15-minutes/

Pero... por lo que lei, hay dependencias para implementar REST respecto a otras versiones de grails y como la Agenda esta en 1.3.7 intente jugar con el plugin "jaxrs" mas precisamente la version "0.5-m1" que es, la que según la info de la web, funciona con la version grails mencionada para realizar la implementación, pero al querer instalar el plugin me arroja error y no lo instala. Hay alguna otra forma de implementar los servicios REST sin este plugin??

Gracias!! Saludos.

franfontana commented 8 years ago

Mati, gracias a la ayuda de los muchachos, mas específicamente Pablo B., Guille C. y Emi S. a quienes les consulte personalmente y charlamos al respecto de este tema de servicios REST y de las aplicaciones mas comunes en el mundo MeLi, pude continuar con la tarea sin necesidad de instalar plugin. Logré que la agenda me responda ante una consulta por curl y devuelva un JSON con el contacto encontrado ante una búsqueda por email, por ejemplo. Te paso la consulta, faltan pulir algunos puntos pero seguramente en el dia de mañana agrego algunas lineas al código para completar la tarea y lo subo al repo en Git para poder dar seguimiento al proyecto.

arcoffontana:agenda ffontana$ curl -X POST "http://localhost:8080/MiAgendaWeb/createcontact?Nombre=fran&Apellido=fontana&Email=franfontana@gmail.com&Movil=1231231321" arcoffontana:agenda ffontana$ arcoffontana:agenda ffontana$ curl -X GET "http://localhost:8080/MiAgendaWeb/searchcontactforemail?Email=franfontana@gmail.com" {"apellido":"fontana","class":"miagendaweb.Contacto","email":"franfontana@gmail.com","movil":"1231231321","nombre":"fran"} arcoffontana:agenda ffontana$

Saludos.

franfontana commented 8 years ago

A modo de recordatorio e informativo agrego las lineas por medio de las cuales se pueden consumir los servicios de la agenda mediante REST con devolución JSON:

curl -X GET "http://localhost:8080/MiAgendaWeb/listcontacts"

curl -X GET "http://localhost:8080/MiAgendaWeb/searchcontactforexpresion?Expresion=XXXXXX"

curl -X GET "http://localhost:8080/MiAgendaWeb/searchcontactforemail?Email=XXXXXX"

curl -X POST "http://localhost:8080/MiAgendaWeb/createcontact?Nombre=XXX&Apellido=XXX&Email=XXX&Movil=XXX"

curl -X PUT "http://localhost:8080/MiAgendaWeb/modifycontact?Email=XXX&Atributo=XXX&Valor=XXX"

curl -X DELETE "http://localhost:8080/MiAgendaWeb/deleteallcontacts?Afirmacion=X"

curl -X DELETE "http://localhost:8080/MiAgendaWeb/deletecontactforemail?Afirmacion=X&Email=XXX"

franfontana commented 8 years ago

Con los nuevos cambios y adaptando las llamadas a los servicios mediante REST y de una forma mas standard las lineas serian las siguientes:

curl -X POST "http://localhost:8080/MiAgendaWeb/api/contacts?Nombre=XXX&Apellido=XXX&Email=XXX&Movil=XXX" ó curl -X POST "http://localhost:8080/MiAgendaWeb/api/contacts/${Nombre}/${Apellido}/${Email}/${Movil}"

curl -X PUT "http://localhost:8080/MiAgendaWeb/api/contacts?Email=XXX&Atributo=XXX&Valor=XXX" ó curl -X PUT "http://localhost:8080/MiAgendaWeb/api/contacts/${Email}/${Atributo}/${Valor}"

curl -X GET "http://localhost:8080/MiAgendaWeb/api/contacts/${Email}" ó curl -X GET "http://localhost:8080/MiAgendaWeb/api/contacts?Email=XXX"

curl -X DELETE "http://localhost:8080/MiAgendaWeb/api/contacts/${Email}/${Afirmacion}" ó curl -X DELETE "http://localhost:8080/MiAgendaWeb/api/contacts?Email=XXX&Afirmacion=X"

curl -X GET "http://localhost:8080/MiAgendaWeb/api/allcontacts"

curl -X DELETE "http://localhost:8080/MiAgendaWeb/api/allcontacts/${Afirmacion}" ó curl -X DELETE "http://localhost:8080/MiAgendaWeb/api/allcontacts?Afirmacion=X"