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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jax-RS请求映射到使用@DefaultValue和@QueryParam的操作相关的知识,希望对你有一定的参考价值。

我想知道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请求匹配 ... 如果有多个最大元素,则实现应该报告警告,并以依赖于实现的方式选择其中一种类型。

以上是关于Jax-RS请求映射到使用@DefaultValue和@QueryParam的操作的主要内容,如果未能解决你的问题,请参考以下文章

如何正确中断 JAX-RS AJAX 请求

JAX-RS @CookieParam值从请求变为另一个

使用JAX-RS resteasy和ContainerRequestFilter / ContainerResponseFilter记录请求

如何在 JAX-RS 客户端中记录请求正文

JAX-RS 2 打印 JSON 请求

使用 JAX-RS/RESTEasy 实现 CORS 的 Ajax 请求