Jax-RS请求映射到使用@DefaultValue和@QueryParam的操作

时间:2018-03-01 17:20:15

标签: java jersey jax-rs restful-url

我想知道jax-rs(或Jersey作为实现)在将@DefaultValue@QueryParam一起使用时如何将客户端请求映射到实际操作。

假设您在资源中有以下操作,一个返回所有资源,另一个返回all并具有自定义视图;

@Path(/v1)
public class MyResource {

    @GET
    @Path(/my-resource)
    public Response getAllResources(){
       ...
    }

    @GET
    @Path(/my-resource)
    public Response getAllResources(@QueryParam("view") @DefaultValue("simple") String view){
       ...
    }
}

在这种情况下,如果我将服务称为/v1/my-resource,那么映射在内部如何工作以及选择哪个操作?

如果在规范中有任何解释,我很感激。

谢谢,

Tugcem。

1 个答案:

答案 0 :(得分:0)

正如Paul正确提到的,对于相同的资源和Web方法(以及可接受的媒体类型),您不应该有多于一种方法。这对JAX-RS来说是正确的,而不仅仅是一些实现。参见JAX-RS规范:

  

3.7.2请求匹配
  ...
  如果有多个最大元素,则实现   应该报告一个警告,并以依赖于实现的方式选择其中一种类型。