我是新来的 Jersey 。所以,请原谅任何错误。
我正在尝试设置一个简单的 REST ws。
有一个方法名称 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 "{}";
}
}
最佳答案
使用 @Path
使参数成为必需的。您可以使用正则表达式来解决这个问题,也可以使用 @QueryParam
和 @DefaultValue
将这两种方法合二为一。
关于java - 如何在 Jersey REST 方法中使用可选数量的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42122377/