を設定しません@QueryParamは、次のように私は、Webサービスを持っている価値
{
"comment" : "comment1",
"type" : "type1"
}
適切なポスト要求が行われたときに私のウェブサービスが呼び出されますパラメータcomment
とtype
の値はnull
です。ここで何が間違っていますか?
を設定しません@QueryParamは、次のように私は、Webサービスを持っている価値
{
"comment" : "comment1",
"type" : "type1"
}
適切なポスト要求が行われたときに私のウェブサービスが呼び出されますパラメータcomment
とtype
の値はnull
です。ここで何が間違っていますか?
クエリパラメータをポストリクエストペイロードと混同しています。
@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
}
はどうもありがとうございました。あなたが提供した2番目の方法で複数の引数を使用することは可能ですか? – Dandelion
短い答え:nop! あなたができることは、必要なすべてのパラメータ(追加する2番目のパラメータを含む)を含むオブジェクトを受け入れるか、オブジェクトのリストを受け入れることです:リスト。あなたはそれに応じてJSONペイロードを適応させる必要があります。 –
LeTex
ありがとうございます@レテックス。 – Dandelion