6.3.4 向 Spring Data 端点添加用户超链接
如果最近的 tacos 端点不在 /api/tacos 返回的超链接中,客户端如何知道如何获取最近的 tacos?它要么猜测,要么使用分页和排序参数。无论哪种方式,它都将在客户端代码中硬编码,这并不理想。
不过,通过声明资源处理器 bean,可以将链接添加到 Spring Data REST 自动包含的链接列表中。Spring Data HATEOAS 提供了 ResourceProcessor,这是一个在通过 API 返回资源之前操作资源的接口。出于需要自动包含链接列表的目的,需要对 ResourceProcessor 进行实现,该实现将一个最近链接添加到类型为 PagedResources<Resource <Taco>> 的任何资源(为 /api/tacos 端点返回的类型)。下一个程序清单显示了定义这样一个 ResourceProcessor 的 bean 方法声明。程序清单 6.8 向 Spring Data REST 端点添加用户链接
1
@Bean
2
public ResourceProcessor<PagedResources<Resource<Taco>>>
3
tacoProcessor(EntityLinks links) {
4
5
return new ResourceProcessor<PagedResources<Resource<Taco>>>() {
6
@Override
7
public PagedResources<Resource<Taco>> process(
8
PagedResources<Resource<Taco>> resource) {
9
resource.add(
10
links.linkFor(Taco.class)
11
.slash("recent")
12
.withRel("recents"));
13
14
return resource;
15
}
16
};
17
}
Copied!
程序清单 6.8 中显示的 ResourceProcessor 被定义为一个匿名内部类,并声明为一个将在 Spring 应用程序上下文中创建的 bean。Spring HATEOAS 将自动发现这个 bean(以及 ResourceProcessor 类型的任何其他 bean),并将它们应用于适当的资源。在这种情况下,如果从控制器返回 PagedResources<Resource<Taco>>,它将收到最近创建的 Taco 的链接。这包括对 /api/tacos 请求的响应。
最近更新 2yr ago
复制链接