3

在 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 中的链接。

4

1 回答 1

3

使用@InjectLinks,您不必模型类中声明链接。您可以创建一个“包装器”表示类,如Jersey 示例中的声明性链接所示(尽管此解决方案实际上并不是您希望的资源类级别)。

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

一些资源

于 2014-11-03T15:17:46.670 回答