【问题标题】:Spring Data REST: How to specify a RepositoryRestResource as the app's entry pointSpring Data REST:如何将 RepositoryRestResource 指定为应用程序的入口点
【发布时间】:2018-02-02 02:16:43
【问题描述】:

目前,导航到应用的根目录,例如

http://localhost:8080/api

返回所有导出资源的链接。但是,我希望这里只返回一个特定的资源(我们将此资源称为StartResource)。通过遍历StartResource 中的链接,可以访问所有其他资源。

阅读 Spring Data REST 的 doc 后,我不清楚如何实现这一点。 restricting 导出哪些资源的部分似乎相关,但我不清楚 exporting 在这种情况下意味着什么 - 未导出仍然给定隐藏的端点,或者根本没有给定端点?

顺便说一句,无论如何最好将这个限制强加给客户端,但我仍然很好奇这个逻辑将如何实现。

【问题讨论】:

  • 使用@RepositoryRestResource(exported = false) 注释存储库意味着没有端点可以与存储库处理的资源进行交互。我明白这不是你要找的。您能否提供一个示例,说明 StartRepository 的外观以及您希望在根页面上获得什么?

标签: spring rest spring-data spring-data-rest


【解决方案1】:

要更改或添加指向根端点的链接,您可以将ResourceProcessor 用于RepositoryLinksResource,在那里您可以删除所有链接,添加您自己的链接,甚至创建您的自定义“rootResource”并返回它而不是原始链接:

@Component
public class RootResourceProcessor implements ResourceProcessor<RepositoryLinksResource> {

    @Override
    public RepositoryLinksResource process(RepositoryLinksResource resource) {

        // resource.removeLinks();
        // resource.add(new Link(...));
        // return resource;
        CustomRootResource rootResource = new CustomRootResource();        
        rootResource.add(new Link(...));
        return rootResource;
    }
}

@Getter
@Setter
public class CustomRootResource extends RepositoryLinksResource {
    private String test = "test";
}

【讨论】:

    猜你喜欢
    • 2016-04-17
    • 2019-02-27
    • 1970-01-01
    • 2017-08-15
    • 2015-06-02
    • 2014-05-02
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    相关资源
    最近更新 更多