Мы используем Resteasy и не можем понять, как вызывать некоторые методы @GET.
Если интерфейс для метода имеет только простые параметры, проблем нет. Пример:
@GET
@Path("/test/{myparam}")
public FacetQueryResultImpl testMethod(@PathParam("myparam")String myparam);
Но если мы попытаемся использовать POJO в качестве параметра, похоже, что RestEasy не сможет сериализовать его как параметры строки запроса. Пример:
@GET
@Path("/testGet")
public FacetQueryResultImpl testMethod(ParamPojo myparam);
или
@GET
@Path("/testGet")
public FacetQueryResultImpl testMethod(@QueryParam("myparam")ParamPojo myparam);
(с, ParamPojo.java:)
public class ParamPojo
{
private String name;
private String description;
(...)
}
Когда мы пытаемся это сделать, иногда службы не обнаруживаются, а иногда мы получаем «У запроса GET не может быть тела». исключение.
Используя @POST, мы можем использовать параметр POJO, но некоторые из наших методов ничего не изменяют на сервере, и поэтому должны использовать @ GET.
Обходной путь - «взорвать» ParamPojo и использовать все его свойства в качестве отдельных параметров для метода. Но это убирает «легкую» часть «RestEasy», не так ли?