当前位置: 首页 > 面试题库 >

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

宣俊豪
2023-03-14
问题内容

我有一个标准的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票证),其功能如下:

您创建一个专用接口,并添加要包括在响应中的所有属性:

public interface MyProjection {

  String getMyProperty();

  MyRelatedObject getOtherDomain();
}

你可以

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

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

一个例子也可以在Spring RESTBucks项目中找到。有关OrderProjection接口定义,请参见。



 类似资料:
  • 函数响应式编程是一个来自90年代后期受微软的一名计算机科学家Erik Meijer启发的思想,用来设计和开发微软的Rx库。 Rx 是微软.NET的一个响应式扩展。Rx借助可观测的序列提供一种简单的方式来创建异步的,基于事件驱动的程序。开发者可以使用Observables模拟异步数据流,使用LINQ语法查询Observables,并且很容易管理调度器的并发。 Rx让众所周知的概念变得易于实现和消费,

  • 问题内容: 我正在扩展实现Serializable接口的类(ArrayBlockingQueue)。Sun的文档(和我的IDE)建议我应该设置此值,以防止恶作剧: 但是,强烈建议所有可序列化的类显式声明serialVersionUID值,因为默认的serialVersionUID计算对类详细信息高度敏感,而类详细信息可能会根据编译器的实现而有所不同,因此可能在反序列化期间导致意外的InvalidC

  • 问题内容: 我有一个项目类和一个紧凑的“修饰符”类: 这可以。但是,我想添加一个查询,以在屏幕足够小时强制类紧凑。 乍一想,这就是我试图做的事情: 但这会产生以下错误: 您不能从@media内部扩展外部选择器。您只能在同一指令中使用@extend选择器。 我如何使用SASS来完成此任务而不必诉诸复制/粘贴样式? 问题答案: 简单的答案是:您不能这样做,因为Sass不能(或不会)为其构成选择器。您不

  • 问题内容: 我是Jenkins的新手,所以这可能很简单。我安装了扩展选择参数插件。我正在使用“多重选择”参数类型从服务器列表(SERVER1,SERVER2,SERVER3)中进行选择,我已将“源”设置为“值”,“默认值”和“值描述”。 我保存了,看起来很棒。我可以选择任何或所有服务器进行构建。现在是一个大问题。如何在构建中使用这些值?基本上,我在构建过程中采取了一个步骤,该步骤可以接受用逗号分隔

  • 我有一个PrimeFaces数据表,有一列名为“name”,还有一个行扩展名为“description”。 是否有可能通过单击使这些行可选择,但在扩展时不能触发选择事件? 编辑

  • 描述 (Description) 使用extend选择器匹配嵌套选择器。 例子 (Example) 以下示例演示了如何在LESS文件中使用扩展嵌套选择器 - extend_syntax.htm <!doctype html> <head> <link rel = "stylesheet" href = "style.css" type = "text/css" /> </h