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

Advertisements

There are no comments on this post.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s