从@PathParam获取对象

时间:2017-04-03 07:21:34

标签: jersey jax-rs dropwizard

我正在创建一个用于访问数据的RESTful服务。

所以我开始编写该服务,首先我使用以下代码创建了一个ReadOnlyResource接口:

public interface ReadOnlyResource<E, K> {
    Collection<E> getAll();
    E getById(K id);
}

其中E是返回的类型,K是关键元素。

因此,如果我使用<Integer, Integer>实现,我会像t

那样注入密钥
@GET
@Path("/{id}")
@Override
public Integer getById(@PathParam("id") Integer id) {
    return null;
}

但是当我的密钥更复杂时,就像这样:

public class ComplexKey {
    private String name;
    private int value;
}

如何注入这个以便我可以使用我的界面?

有没有办法注入两个参数并用它们创建密钥?

编辑:@QueryParam的解决方案没有帮助,因为我尝试访问的是/ 某个名称 / 某个数字并且接收包含的ComplexKey实例来自网址的一些名称和一些数字值。

1 个答案:

答案 0 :(得分:3)

  

我尝试访问的内容是 /某个名称/某个数字并接收一个ComplexKey实例,其中包含来自网址的某些名称和一些数字值

使用@BeanParam

public class ComplexKey {
    @PathParam("name")
    private String name;
    @PathParam("value")
    private int value;
    // getters/setters
}

@Path("/{name}/{value}")
getById(@BeanParam ComplexKey key)