2017-02-08 4 views
0

私はジャージーを初めて使いました。だから間違いを赦してください。Jersey RESTメソッドでオプションのパラメータ数を使用するにはどうすればよいですか?

私は簡単なREST wsをセットアップしようとしています。 メソッド名getConnectedMHubsには、1つの必須パラメータthingIDと2つのオプションのパラメータtimedeltaがあります。

オプションのパラメータの有無にかかわらず、2種類の呼び出しに同じメソッド名を使用できますか? 私は2 pathesを指定しようとしましたが、ModelValidationExceptionを得た、と言うこと:「@Consumes」で定義されているよう

リソース・モデルがHTTPメソッドのあいまいな(サブ)資源法 GETと入力MIMEタイプを持っており、 "@Produces" パブリックJavaメソッドで注釈...

コードサンプル:次のようにパスパターンを使用して

@Path("/api") 
public class RendezvousWebService { 
    @GET 
    @Produces(MediaType.APPLICATION_JSON) 
    @Path("connectedmhubs/{mhubid}") 
    public String getConnectedThings(@PathParam("mhubid") String strMHubID) { 
     // ... 
     return "{}"; 
    } 

    @GET 
    @Produces(MediaType.APPLICATION_JSON) 
    @Path("connectedmhubs/{mhubid}/{time}/{delta}") 
    public String getConnectedThingsExtended(@PathParam("mhubid") String strMHubID, @PathParam("time") long timestamp, @PathParam("delta") long delta){ 
     // ... 
     return "{}"; 
    } 

} 

答えて

1

@Path("connectedmhubs/{mhubid}") 

は、パスパラメータを必須にします。ただし、この制限を克服するために正規表現を使用することはできます。詳細はlinkを参照してください。

2

@Pathを使用すると、パラメータが必須になります。正規表現でこれを回避するか、または@QueryParam@DefaultValueを使用して2つのメソッドを1つにまとめることができます。

関連する問題