Resteasyを使用していて、@GETメソッドを呼び出す方法がわかりません。簡単に@GETメソッドのPOJOをシリアル化できますか?
メソッドのインターフェイスに単純なパラメータしかない場合は問題ありません。例:
@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;
(...)
}
、時々サービスが見つからないと、時々、私たちは、「Aを取得しますGETリクエストはボディを持つことはできません。例外。
@POSTを使用すると、パラメータを持つPOJOを使用できますが、メソッドの中にはサーバー上の何も変更しないため、@ GETを使用する必要があります。
回避策は、ParamPojoを「分解」し、すべてのプロパティをメソッドの分離パラメータとして使用することです。しかし、これは "RestEasy"の "Easy"部分を削除しますか?
おかげエイデン、当然のです! – electrotype
GETリクエストでデータを送信することは、REST哲学に反することに注意してください。ロイ・フィールディングの「公式」回答を参照してください:http://stackoverflow.com/questions/978061/http-get-with-request-body/983458#983458 – Gregor
@Gregor上記の例では、要求本体にデータは送信されません。 – eiden