gpt4 book ai didi

java - 为什么 Spring Data REST 包含 "duplicate"链接?

转载 作者:搜寻专家 更新时间:2023-11-01 01:33:14 24 4
gpt4 key购买 nike

您好,我正在使用 spring data rest,当我使用 PagingAndSortingRepository 时遇到一个奇怪的问题,我得到的响应具有预期的 _self 链接,但它也提供了相同实体 hf:foo 的重复链接,如下所示响应。

重复链接“ self ”:{“href”:“http://localhost:8080/foos/8445” } 和“hf:foo”:{ “href”:“http://localhost:8080/foos/8445

  curl http://localhost:8080/foos?page=0&size=1

{
"_links" : {
"first" : {
"href" : "http://localhost:8080/foos?page=0&size=1"
},
"prev" : {
"href" : "http://localhost:8080/foos?page=0&size=1"
},
"self" : {
"href" : "http://localhost:8080/foos"
},
"next" : {
"href" : "http://localhost:8080/foos?page=2&size=1"
},
"last" : {
"href" : "http://localhost:8080/foos?page=81&size=1"
}
},
"_embedded" : {
"hf:foos" : [ {
"name" : "comsi",
"_links" : {
"self" : {
"href" : "http://localhost:8080/foos/8445"
},
"hf:foo" : {
"href" : "http://localhost:8080/foos/8445"
} ]
}
} ]
},
"page" : {
"size" : 1,
"totalElements" : 82,
"totalPages" : 82,
"number" : 1
}
}

请帮忙。这是居里命名空间的问题吗。

最佳答案

您在这里看到的不是您声称的重复链接。一个是 self 链接,它根据定义需要是规范的(即没有模板参数)。

另一个附加链接公开了资源类型(在本例中为 foo 的项目资源)。这允许客户端推断他们期望什么(什么表示,使用哪些 HTTP 动词)点击链接。

此外,该特定链接将公开可能适用于该资源的模板变量。例如。如果投影可用于 Foo 实例,则嵌入文档的链接将如下所示。

 { 
_links : {
self : { href : "…/foos/8445"},
ht:foo : { href : "…/foos/8445{?projection}" }
}
}

现在您可能会争辩说,如果附加链接与 self 链接相同,则不需要存在该链接。这将要求客户端更加复杂,因为它基本上需要通过“如果有,则使用,如果没有,则做一些不同的事情”来保护访问。这就是为什么我们决定始终呈现它,只是为了确保寻找基于资源类型的链接的客户端无论如何都能找到它们。

关于java - 为什么 Spring Data REST 包含 "duplicate"链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31538048/

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