gpt4 book ai didi

java - 在 Spring Data Rest 响应中选择性地扩展关联

转载 作者:IT老高 更新时间:2023-10-28 13:56:22 26 4
gpt4 key购买 nike

我有一个标准的 Spring 数据 JPA 和 Spring 数据 Rest 设置,它们正确地将关联作为指向正确资源的链接返回。

{
"id": 1,
"version": 2,
"date": "2011-11-22",
"description": "XPTO",
"_links": {
"self": {
"href": "http://localhost:8000/api/domain/1"
},
"otherDomain": {
"href": "http://localhost:8000/api/domain/1/otherDomain"
}
}
}

但是,在 一些 请求中,我希望扩展与“otherDomain”的关联(因此客户端不必执行 N+1 次请求即可获取完整数据)。

是否可以配置 Spring Data Rest 以这种方式处理响应?

最佳答案

默认响应必须保持不变,以确保 PUT 请求的负载与 GET 返回的负载对称。但是,Spring Data REST 引入了一个称为投影的功能(有关详细信息,请参阅 JIRA ticket),其工作原理如下:

您创建一个专用接口(interface)并添加您想要包含在响应中的所有属性:

public interface MyProjection {

String getMyProperty();

MyRelatedObject getOtherDomain();
}

你可以

  • 使用 @Projection 注释接口(interface)并将其放置在与域类型或其子包相同的包中
  • 或者您使用 RepositoryRestConfiguration 手动注册投影并手动调用 projectionConfiguration().addProjection(…)(通过扩展 RepositoryRestMvcConfiguration 并覆盖configureRepositoryRestConfiguration(…)).

这将导致为域类型公开的资源接受带有投影名称的 projection 参数(名称也可配置 ProjectionConfiguration)。如果给定,我们将跳过默认渲染(包括渲染相关实体的链接而不是嵌入它们)并让 Jackson 渲染支持给定接口(interface)的代理。

这方面的一个例子也可以在 Spring RESTBucks 中找到。项目。见 OrderProjection用于接口(interface)定义。

关于java - 在 Spring Data Rest 响应中选择性地扩展关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23056091/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com