Utilizamos Resteasy y tenemos problemas para calcular cómo llamar a algunos métodos @GET.¿Puede RestEasy serializar un POJO para un método @GET?
Si la interfaz para el método sólo tiene parámetros simples, no hay ningún problema. Ej:
@GET
@Path("/test/{myparam}")
public FacetQueryResultImpl testMethod(@PathParam("myparam")String myparam);
Pero si tratamos de utilizar un POJO como parámetro, parece RestEasy no es capaz de serializarlo como parámetros de cadena de consulta. Ej:
@GET
@Path("/testGet")
public FacetQueryResultImpl testMethod(ParamPojo myparam);
o
@GET
@Path("/testGet")
public FacetQueryResultImpl testMethod(@QueryParam("myparam")ParamPojo myparam);
(con, ParamPojo.java :)
public class ParamPojo
{
private String name;
private String description;
(...)
}
Cuando tratamos esto, a veces los servicios no se encuentran y, a veces se obtiene un "Un La solicitud GET no puede tener un cuerpo ". excepción.
Usando @POST que son capaces de utilizar un POJO tiene el parámetro, pero algunos de nuestros métodos no modifican nada en el servidor, y por lo tanto debe utilizar @GET.
Una solución consiste en "explotar" la ParamPojo, y utilizar todas sus propiedades como parámetros separados para el método. Pero esto elimina la parte "Fácil" de "RestEasy", ¿no es así?
Gracias Eiden, es apreciada! – electrotype
tenga en cuenta que el envío de datos en las solicitudes GET va en contra de la filosofía REST, consulte la respuesta "oficial" de Roy Fielding aquí: http://stackoverflow.com/questions/978061/http-get-with-request-body/983458#983458 – Gregor
@Gregor El ejemplo anterior no envía ningún dato en el cuerpo de la solicitud. – eiden