【问题标题】:How can I use an optional number of parameters in a Jersey REST method?如何在 Jersey REST 方法中使用可选数量的参数?
【发布时间】:2017-02-09 04:10:26
【问题描述】:

我是泽西岛的新手。所以,请原谅任何错误。

我正在尝试设置一个简单的 REST ws。 有一个方法名称getConnectedMHubs,它有一个必需参数thingID 和两个可选参数:timedelta

是否可以对两种类型的调用使用相同的方法名称,带和不带可选参数? 我试图指定两个路径,但得到了一个ModelValidationException,上面写着:

资源模型对于 HTTP 方法具有不明确的(子)资源方法 获取并输入由“@Consumes”和“@Produces”定义的 MIME 类型 Java 方法的注解 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 "{}";
    }

}

【问题讨论】:

    标签: java rest jersey jax-rs


    【解决方案1】:

    使用@Path 使参数成为强制性参数。您可以使用正则表达式解决此问题,也可以使用 @QueryParam@DefaultValue 将这两种方法合二为一。

    【讨论】:

      【解决方案2】:

      使用这样的路径模式:

      @Path("connectedmhubs/{mhubid}")
      

      使路径参数成为必需的。但是,您可以使用正则表达式来克服此限制。有关详细信息,请参阅此link

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-20
        • 1970-01-01
        • 2019-06-03
        • 2016-06-13
        • 1970-01-01
        • 1970-01-01
        • 2018-06-23
        相关资源
        最近更新 更多