Resteasy+JSON toma 1

RestEasy hace honor a su nombre y exponer un servicio rest es violentamente sencillo.
Es dificil agregar algo a este genial post
http://www.assertionerror.com/2009/02/26/restful-web-services-with-resteasy/

Mi vuelta de tuerca fue usar binding automático a través de jaxb, más aún, hacerlo directamente a json.
Así enviaríamos por rest lo siguiente:
{"person":{"name":"Joe Bloggs","phoneNumber":"123456789"}}
Retocando el post en el que me basé para este ejemplo, habría que cambiar los métodos createEntry, getEntry y updatePerson para recibir un Person en lugar de InputStream y eliminar los métodos helpers readPerson y outputPerson. Luego, lo que se consume y produce pasa a ser "application/json" así que se ajustan las annotations @Consume y @Produce (también hay que cambiar el test para que envíe como Content-Type lo mismo).
Finalmente la clase Person queda

@XmlRootElement(name = "person")
public class Person {
[...]
@XmlElement
public String getName() {
return name;
}
[...]
@XmlElement
public String getPhoneNumber() {
return phoneNumber;
}
[...]
}

Por ahora todo parece marchar sobre ruedas... veamos a qué evoluciona :)

Descarga del ejemplo con maven
Notas:
* en algún momento del lado el servidor interpreta que si le mando un número que comienza con 0, debe sacarlo, no importa si mi pojo tiene un atributo que es del tipo string.
* usar el server embebido como sugieren para unit testing no me llevó a los mejores resultados, luego del primer request, este se quedaba tildado y moría x timeout con un -1 como respuesta http. En el AS no tuve ningún problema al tirar el war y testearlo
Doc oficial: http://www.jboss.org/file-access/default/members/resteasy/freezone/docs/1.1-RC2/userguide/html_single/index.html

post-original
comentarios-a

Deja una respuesta

 

 

 

Puedes usar estas etiquetas HTML

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>