有没有办法将JAX-RS资源链接到另一个资源,如Spring HATEOAS?

时间:2014-11-03 11:17:05

标签: jersey jax-rs dropwizard hateoas spring-hateoas

在Spring中,我们有@ExposesResourceFor注释,可以将我们的资源与其他资源相关联。多亏了这一点,我们的Value对象(表示)对实际资源一无所知。

有没有办法在JAX-RS中执行此操作?我正在使用Dropwizard和Jersey和Jackson,我看到的是@InjectLinks注释,我可以在这样的值对象中使用它:

public class UserGroup {
    @JsonProperty
    public String name;

    @InjectLinks(GroupsResource.class)
    public URI myResource;

    public UserGroup(String name){
        this.name = name;
    }
}

但不幸的是,我的价值对象应该对资源一无所知,所以我要求我可以在资源水平上进行这样的链接 - 如上所述,在控制器的spring-hateoas中链接。 < / p>

1 个答案:

答案 0 :(得分:3)

使用@InjectLinks,您不会 来声明模型类中的链接。您可以创建一个&#34;包装器&#34; 表示类,如declarative-linking中的Jersey examples所示(尽管此解决方案实际上不是在资源类级别上你希望)。

另一种可能的解决方案(而不是声明性链接)是使用JAX-RS 2.0 Link类,并以编程方式连接(与Jersey实现/注释无关) 。您可以添加指向响应标头的链接,如here所示,或者将Link添加到模型类中,如here所示(或者也可以使用包装类,所以至于不侵入你的模型类)

部分资源