问题标签 [spring-data-rest]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1252 浏览

java - 使用 Spring HATEOAS 进行部分响应的最佳实践

我正在编写一个多用户应用程序,其中对给定资源(例如/people/4)的请求将根据执行请求的用户返回不同级别的详细信息(例如,用户 4 或支持代表将看到整个资源,而其他用户将看不到某些字段,例如用户的电子邮件地址)。

Spring HATEOAS 对建链有彻底的支持,但是主ResourceAssember界面只提供了一个单独的适配器方法,它接受一个域对象并返回一个资源对象,没有提供额外的参数(例如当前的 Spring Security 用户),也ResourceSupport没有Resource<T>提供过滤返回的字段的工具。

我目前倾向于的方法是实现toResourceforResourceAssembler<Customer, CustomerResource>手动挖掘当前 Spring Security 凭据并在此时应用过滤,本质上是手写一个多阶段复制构造函数,它将添加公共字段,然后是 for-friends 字段,然后是资源对象的私有字段。

是否有更集成的,特别是声明性的方式来处理任务,或者这是现在可用的最佳解决方案?这种方法是否会与 Spring Data REST 控制器集成,或者如果我想自己处理程序集,我是否必须重新实现分页等等?

0 投票
2 回答
22984 浏览

spring - @NamedQuery 覆盖 Spring Data Rest JpaRepository 中的 findAll

有没有办法覆盖 Spring Data Rest 执行的 findAll 查询?

我需要一种根据某些特定标准过滤结果的方法,似乎使用 a@NamedQuery应该符合我正在寻找的内容,所以我设置了一个测试。

有了这个,我希望 SDR 能够利用我的 findAll() 查询(返回 1 个结果),而是执行相同的旧 findAll 逻辑(返回所有结果)。

在我的存储库中,我添加了:

在这种情况下,它会选择提供的@NamedQuery. 所以...

我应该如何覆盖默认findAll()逻辑?我需要实际构建一组复杂的标准并将其应用于结果集。

0 投票
1 回答
1223 浏览

spring-data-rest - 自 Spring Data REST 2.0.0.RC1 以来无法识别的字段“_links”

一方面,我刚刚将 spring-data-rest-webmc 的版本更新为我的服务器的最新 2.0.0.RC1 版本。在此版本中,json 格式更改为 HAL 格式。

另一方面,我有一个使用 0.9.0.RELEASE 版本的 spring-hateoas 库的客户端。在这个客户端中,我使用 RestTemplate 从我的服务器获取资源,如下所示:

AuthorResource 类扩展了 ResourceSupport。

现在,我有这个错误:

如何配置我的客户端以支持这种新格式?我试试

@EnableHypermediaSupport(type = EnableHypermediaSupport.HypermediaType.HAL)

但它不起作用。

谢谢你的帮助。

0 投票
1 回答
1841 浏览

xml - 如何使用 XML 配置和启用 Spring Data REST?

我想我是老派,但我更喜欢 XML 配置而不是 JavaConfig。

如何使用 Maven 和仅 XML Spring 配置文件正确配置 Spring Data REST?

我有一个简单的应用程序,它使用 Postgres、Hibernate、一个 Spring Data JPA 存储库和一个 Spring MVC 控制器运行。

0 投票
1 回答
3034 浏览

java - spring-data-rest,与连接表的多对多关系

是否可以公开使用连接实体(包含额外数据列)的多对多关系,下面是我的实体;

我正在尝试在 REST 中显示“购买”,我已将“产品”作为工作 REST 映射的示例;

因此,如果我发送 REST 调用;

[获取 http://localhost:8080/webapp/users/1]

它返回 [http://localhost:8080/webapp/users/1/products] 的链接,但不返回 [http://localhost:8080/webapp/users/1/purchases] 的链接

0 投票
1 回答
981 浏览

spring - 查看与spring-data-rest-webmvc冲突的jsp页面的解析?

我在如何配置我的应用程序方面遇到了困难。目标是能够在同一 Tomcat 服务器上具有以下内容:

  • 一个完整的restful服务(即超媒体层,从而返回application/hal+json格式)
  • 一个休息服务服务的旧方式(控制器访问)
  • 一套经典的网页交付控制器

环境是:

存储库:

其余控制器:

“网络”控制器:

JPA 配置(为简化起见,我只是将 jpa 数据源的声明...)

WebMvc 的配置:

}

存储库的配置:

初始化器配置:

请记住,Web 根上下文设置为“sr”

当 tomcat 服务器启动时,我可以清楚地看到正在发生的映射。

好的:

  • 当我在 xlocalhostx:8080/sr 上访问服务器时(sr 是根 Web 上下文),我确实以超媒体方式获得了我的 restful 服务列表,如下所示:

    {“_links”:{“userss”:{“href”:“ http://xlocalhostx:8080/sr/u”}}}

  • 当我点击服务器时,xlocalhostx:8080/sr/users我得到了预期的结果:

[{"id":1,"name":"Clark","lastname":"Kent"},{"id":2,"name":"Lois","lastname":"Lane"}]

当我运行以下测试时,它通过了:

不好的 - 当我在 xlocalhostx:8080/sr/ web/home上访问服务器时,我得到一个 404,因为视图解析过程试图使用错误的路径返回视图。(我的 home.jsp 当然位于 views 文件夹下的 WEB-INF 文件夹下。我可以清楚地看到我的 HomeController 被击中,因为我有日志跟踪。

我从服务器返回的内容如下:

404 说:/sr/WEB-INF/viewshome.jsp 请求的资源不可用。正如您所看到的,路径根本不正确,我在它的前面有根 Web 上下文(“sr”),并且在 home.jsp 文件之前缺少正斜杠。

欢迎任何想法。

谢谢。

0 投票
2 回答
1773 浏览

spring-data - 覆盖 findAll() Spring Data Gemfire Repo 查询

我在 GemFire 地区拥有数百万个对象。我不希望findAll()执行默认 SDR 查询以一次性检索数百万个对象。我试图弄清楚是否有一种方法可以覆盖默认的 findAll 查询并提供 LIMIT 参数来限制从 GemFire 区域检索到的对象数量。这是我想做的一个例子:

目前,我在 Spring Data Gemfire 1.4.0.BUILD-SNAPSHOT 和 Spring Data REST 2.0.0.BUILD-SNAPSHOT 版本

0 投票
3 回答
5167 浏览

java - spring-data-rest,您能否提供实体的完整详细信息而不是(或带有)链接

有没有办法返回加入实体的完整详细信息而不是链接?在下面的示例中,我还想返回产品的详细信息,如果我有 100 次购买的列表,它将避免必须拨打 100 次电话来获取产品详细信息。

Product、User 和 Purchase 实体的存储库都是使用 spring-data-jpa 创建的

实体和存储库;

0 投票
7 回答
34387 浏览

spring-data-rest - Spring Data Rest 基本路径

我通过创建扩展 RepositoryRestMvcConfiguration 的 Java 配置类并将 @RestResource 添加到存储库,将 Spring Data Rest (2.0) 添加到现有 Spring MVC 应用程序。

是否可以更改 Rest API 的基本 URL?例如:

代替

我尝试使用 setBaseURI 覆盖 configureRepositoryRestConfiguration,但它似乎不适用于响应中的所有链接。

0 投票
2 回答
5984 浏览

spring - 在 spring-data-rest 中使用验证器返回 http 500 而不是 400

我正在尝试在 spring-data-rest 中进行验证。从文档中,您只需要提供一个验证器,我已经让它工作了,但是当一个验证约束被成功捕获/处理时,我会得到一个带有堆栈跟踪的 500 错误页面。

在配置类 RepositoryRestMvcConfiguration 中,它有一个 validationExceptionHandler,看起来它应该得到这样的验证错误以返回 400 而不是 500。它也是一个延迟加载的 bean。

我的设置不正确吗?还是有另一种方法可以让 spring-data-rest 返回 400 而不是 500?

我正在使用 spring-data-rest 版本 2.0.0 Release

由tomcat返回的堆栈跟踪:

账户实体:

RestMvcConfig: