我想知道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
,那么映射将如何在内部工作以及选择哪个操作?
如果在规范中有任何解释,我很感激。
谢谢,
Tugem。
正如Paul正确提到的,对于相同的资源和Web方法(以及可接受的媒体类型),您不应该有多于1个方法。对于JAX-RS来说,这是正确的,而不仅仅是一些实现。参见JAX-RS规范:
3.7.2请求匹配 ... 如果有多个最大元素,则实现应该报告警告,并以依赖于实现的方式选择其中一种类型。