当前位置: 首页 > 知识库问答 >
问题:

Spring Data Rest与Spring HATEOAS集成

谭修竹
2023-03-14

从各种文件和TUT中,我获得并学到了以下几点:

>

Spring HATEOAS用于在我们通过Controller或RESTendpoint返回的实体中创建链接。我们有ResourceSupport来扩展我们的实体或资源包装类来包装我们的实体以创建或添加链接。有几个注释和类可供使用,例如@EnableHyperedaSupportEntityLinks

可能有一些问题我还没有探索或了解,但我只是好奇我们如何将SDR结合到HATEOAS链接构建过程中?代表…说话。

EntityBean bean = repository.findByName(name);
Resource<EntityBean> resource = new Resource<EntityBean>(bean);
//JaxRsLinkBuilder.linkTo(TestResource.class).withRel("entity")     // this also works   
//ControllerLinkBuilder.linkTo(TestResource.class).withRel("myRel") // this also works
// I am curious how ControllerLinkBuilder and JaxRSLinkBuilder both are working for JaxRS.  
//Here TestResource is my REST service class. now in below line: 
resource.add(JaxRsLinkBuilder.linkTo(MyRepository.class).withRel("sdf")); //not working
// MyRepository is SDR exposed repository, which I thought should work but not working.
return resource;  

所以,我只想将我公开的REST存储库包含到手动HATEOAS链接构建过程中。。有可能这样做吗?

共有1个答案

广瑞
2023-03-14

您应该能够使用Spring-HATEOASResourceProcess来构建链接。

例子:

@Component
public class MyBeanResourceProcessor implements ResourceProcessor<Resource<MyBean>> {

    @Autowired
    private EntityLinks entityLinks;

    public Resource<MyBean> process(Resource<MyBean> resource) {
        MyBean mybean = resource.getContent();

        // Do your linking here using entity class
        //EntityBean bean = repository.findByName(name);
        //Resource<EntityBean> resource = new Resource<EntityBean>(bean);
        // assuming you are linking to a single resource and bean.getId() method... check entitylinks for other methods
        //resource.add(entityLinks.linkForSingleResource(bean.class,bean.getId()).withRel("sdf"));

        return resource;
    }

}
 类似资料:
  • 我尝试使用MockMVC和TestRestTemboard。在这两种情况下,返回的响应都是404,但是APIendpoint在集成测试之外工作(当我自己运行Spring应用时)。 有没有人有一个可以工作的示例应用程序,它使用SpringDataREST对生成的控制器进行了工作集成测试? 我还可以编写针对自己控制器的常规集成测试(非SDR类型) 测试代码: 回购: 好的,我发现了问题,但我不知道答案

  • 我只是想学习,构建一个Spring HATEOAS应用程序。 我已将自定义查询添加到我的存储库中: 我得到了很好的JSON响应,但由于这是可分页的,我想要一个链接部分。。。使用上一个/下一个。 我该如何添加它? 主url提供了所有客户的列表,链接没有问题,我只想将这些链接添加到自定义可分页方法。 --编辑-- 啊! 使findAllFitered方法返回一个页面而不是列表。。。

  • 我是新点燃的。 步骤1:我在两个VM(ubuntu)中安装了Ignite 2.6.0,在一个VM中启动了节点。下面有COMAND。bin/ignite.sh examples/config/example-ignite.xml 步骤2:我的所有配置都在example-default.xml中 步骤3:在其他VM中执行包含datagrid逻辑的client.jar(该VM既是客户机也是节点)。 步骤

  • 0.9.2 新版功能. 这些函数提高了初始化 Django 配置中环境变量的效率,运行后即可从 Django 项目或者 Django 本身中提取环境变量,而不需要每次使用 fabfile 时都亲自设置环境变量,或者使用 manage.py 插件。 目前,这些函数仅支持 Fabric 和 fabfile 以及它能引用到的 Django 库交互。听起来限制了你的使用,其实不然。在下面的例子中,你可以像

  • 问题内容: 我对SQL(Server2008)的较低层次的了解是有限的,现在我们的DBA对此提出了挑战。让我解释一下这种情况:(我已经提到一些明显的陈述,希望我是对的,但是如果您发现有问题,请告诉我)。 我们有一张桌子,上面放着人们的“法院命令”。创建表(名称:CourtOrder)时,我的创建方式如下: 然后,我将非聚集索引应用于主键(以提高效率)。我的理由是,这是一个唯一字段(主键),应该像我

  • 问题内容: 我正在尝试将Lucene与EclipseLink结合使用,并想知道那里是否有任何好的集成库?我已经看过太阳耀斑,看起来像石灰,它可以满足我的要求,但是它已经过时了(尽管我使用的是EclipseLink的较旧版本,但我使用的是Lucene 4.10)这可能有用,但是我找不到任何文档,有关如何使用它的示例或教程。 任何建议将不胜感激(我也不相信我们也可以切换到Hibernate) 提前致谢

  • 我正在寻找一些关于使用webpack的帮助,用于一个大型AngularJS应用程序。我们使用基于特性的文件夹结构(每个特性/页面都有一个模块,它们有控制器、指令)。我已经成功地配置了webpack,使其能够与Grunt一起工作,生成一个包。我想创建块,因为它将是一个大的应用程序,我们想要加载模块(页面/特征)工件异步。 我将通过一些webpack示例使用语法使用。然而,我不能得到块懒惰加载。首先,

  • 我正在构建一个小微服务来访问来自SFTP文件服务器的文件。我决定使用Spring Integration SFTP完成这项工作。我对Spring Integration很陌生,对它的工作原理很困惑。 我的目标是在SFTP服务器上获得一个目录中的文件列表,并将它们呈现给用户界面。从那里,用户将选择一个文件进行下载,我将使用文件名将文件从SFTP服务器流式传输到用户界面。 其次,我是否需要两个接口才能