2016-05-26 19 views

答えて

2

クエリパラメータをポストリクエストペイロードと混同しています。

@QueryParameter クエリパラメータはリクエストURIクエリパラメータから抽出され、メソッドパラメータ引数のjavax.ws.rs.QueryParamアノテーションを使用して指定します。

クエリパラメータを設定しないと、クエリパラメータはnullに設定されます。

あなたはクエリパラメータとして「コメント&タイプ」を維持したい場合は、次のようにあなたがそれらを渡す必要があります。

http://<HOST:port>/push?comment=comment1&type=type1 

PostメソッドペイロードはあなたのPOSTリクエストと一緒に送信されますどのような代わりです。

あなたのケースでは、ペイロードとして 'コメント'と 'タイプ'を渡していますが、何にもマッピングされていません。

ペイロードを受け取ってオブジェクトにマップする場合は、少し変更する必要があります。

まず、@XmlRootElement

@XmlRootElement  
class MyMessage{ 
String comment; 
String type; 
//add getter and setter 
} 

と注釈付きクラスを作成し、残りのAPIエントリポイントは次のようになります。

@POST 
@Path("/push") 
@Consumes(MediaType.APPLICATION_JSON) 
public String push(MyMessage message){ 
    String comment = message.getComment() 
    String type = message.getType() 
    // do something 
} 
+0

はどうもありがとうございました。あなたが提供した2番目の方法で複数の引数を使用することは可能ですか? – Dandelion

+1

短い答え:nop! あなたができることは、必要なすべてのパラメータ(追加する2番目のパラメータを含む)を含むオブジェクトを受け入れるか、オブジェクトのリストを受け入れることです:リスト。あなたはそれに応じてJSONペイロードを適応させる必要があります。 – LeTex

+0

ありがとうございます@レテックス。 – Dandelion

関連する問題