java如何在Jersey REST方法中使用可选数量的参数?
我从新泽西到新泽西。所以,请原谅任何错误
我正在尝试设置一个简单的RESTWS。
有一个方法名getConnectedMHubs
,它有一个必需的参数thingID
和两个可选参数:time
和delta
是否可以对两种类型的调用使用相同的方法名,包括可选参数和不包括可选参数?
我试图指定两个路径,但得到一个ModelValidationException
,表示:
A resource model has ambiguous (sub-)resource method for HTTP method GET and input mime-types as defined by"@Consumes" and "@Produces" annotations at Java methods public ...
代码示例:
@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 楼答案
使用如下路径模式:
使路径参数成为必需参数。但是,您可以使用正则表达式来克服此限制。有关详细信息,请参见此link
# 2 楼答案
使用
@Path
使参数成为必需的。您可以使用正则表达式解决这个问题,或者使用@QueryParam
和@DefaultValue
将两个方法合并为一个