是否有使用HATEOAS定义链接顺序列表的规则?
可以轻松地将自我,下一个和上一个链接添加到基于HATEOAS的响应中。以下是回复示例:
{
links : [{
rel : "next",
href : "http://localhost:8080/persons?page=1&size=20"
}],
content : [{
id: "",
name: "",
lastname: "",
age: 0
}],
pageMetadata : {
size : 20,
totalElements : 30,
totalPages : 2,
number : 0
}
};
因此,对下一个和上一个链接的分页并不困难,但我无法弄清楚如何直接访问例如第10页,例如使用select元素(让我们假设有超过10页)。我应该将所有链接添加到响应中,例如page1,page2,page3等吗?当然我知道请求的格式,所以我可以创建适当的查询,但这似乎有点错,因为整点似乎并不依赖于服务的实际链接。我不是这个问题的专家,我在这个网站或谷歌找不到答案。 提前谢谢。
答案 0 :(得分:1)
常见的解决方案是使用URI templates。具体而言,关于Form-Style Query Expansion的第3.2.8节。
假设page
和size
都是可选的,您可以将链接URI模板构建为localhost:8080/persons{?page,size}
。
URI模板没有定义哪些值可以接受;没有将page
或size
限制为数值的机制。因此,除了现有的next / prev链接之外,您还应该包含此模板。我不确定哪种链接关系最能描述这样的资源,但“收集”似乎并不太遥远。
为了使用URI模板,您需要一个库,无论哪种语言都会生成/使用模板。快速搜索以各种语言生成list of libraries,您可能会觉得有用。
最后,根据您的超媒体格式,您可能需要指定模板化的URI。例如,HAL + JSON使用布尔templated
属性。
{
"_links": {
"collection": {
"href": "/persons{?page,size}",
"templated": true
}
}
}