gpt4 book ai didi

java - Spring Data Rest - 关联资源自链接

转载 作者:行者123 更新时间:2023-11-30 02:13:12 25 4
gpt4 key购买 nike

这是 GET-Request 的 JSON 响应:

{
...
"_links": {
"self": {
"href": "http://localhost:8080/persons/1"
},
"person": {
"href": "http://localhost:8080/persons/1{?projection}",
"templated": true
},
"anotherResource": {
"href": "http://localhost:8080/persons/1/anotherResource"
}
}
}

问题是,我需要有“anotherResource”的自链接。而不是:

 "href": "http://localhost:8080/persons/1/anotherResource"

我需要有类似的链接:

"href": "http://localhost:8080/anotherResources/2"

我知道我可以通过额外的请求来实现它。但这个解决方案在我的情况下并不实用/不可能,我需要大量数据,并且对每个项目执行额外的请求并不好。

有什么建议/解决方案吗?

最佳答案

您可以尝试使用ResourceProcessorRepositoryEntityLinks建立您需要的链接:

@Component
public class PersonResourceProcessor implements ResourceProcessor<Resource<Person>> {

private RepositoryEntityLinks entityLinks;

public PersonResourceProcessor(RepositoryEntityLinks entityLinks) {
this.entityLinks = entityLinks;
}

@Override
public Resource<Person> process(Resource<Person> resource) {
Person person = resource.getContent();
AnotherResource anotherResource = person.getAnotherResource()
Link link = entityLinks.linkForSingleResource(anotherResource).withRel("anotherResource");
resource.add(link);
return resource;
}
}

但是这里要小心,因为如果资源 person 没有急切地嵌套 anotherResource 你可以捕获 LazyInitializationException (不确定,但是请检查它...)或为每个 person.getAnotherResource() 调用( the N+1 queries issue )获取额外的数据库查询。这就是为什么最好使用像“/persons/1/anotherResource”这样的相对链接。

关于java - Spring Data Rest - 关联资源自链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49487813/

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