2017-02-08 14 views
0

我是新澤西州。所以,請原諒任何錯誤。如何在Jersey REST方法中使用可選數量的參數?

我正在嘗試設置一個簡單的REST ws。 有一個方法名稱getConnectedMHubs有一個必需的參數thingID和兩個可選參數:timedelta

是否可以使用相同的方法名稱的兩種類型的調用,有和沒有可選參數? 我試圖指定兩個pathes但有一個ModelValidationException,上面寫着:

資源模型爲HTTP方法 GET和輸入MIME類型曖昧(子)資源的方法,通過「@Consumes」和定義「@生產」 註解在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來將這兩種方法合併爲一個。

相關問題