我应该如何使用HAL格式公开REST API的分页,我是否应该使用分页元数据将所有内容包装在另一个HAL格式的对象中?或者
REST API HAL格式下是否存在建议的分页格式?
更新
没有分页的示例
[
{
"Id": "SomeId",
"Attribute": 5,
"_links": {
"User": { "href": "http://mywebapi/etc", "templated": true }
},
"_embedded": { "User": { "Id": "SomeId","_links": {},"_embedded": {}} }
},
{
"Id": "SomeId",
"Attribute": 5,
"_links": {
"User": { "href": "http://mywebapi/etc", "templated": true }
},
"_embedded": { "User": { "Id": "SomeId","_links": {},"_embedded": {}} }
}
]
分页示例
{
"_embedded": {
"items":
[
{
"Id": "SomeId",
"Attribute": 5,
"_links": {
"User": { "href": "http://mywebapi/etc", "templated": true }
},
"_embedded": { "User": { "Id": "SomeId","_links": {},"_embedded": {}} }
},
{
"Id": "SomeId",
"Attribute": 5,
"_links": {
"User": { "href": "http://mywebapi/etc", "templated": true }
},
"_embedded": { "User": { "Id": "SomeId","_links": {},"_embedded": {}} }
}
]},
"_links": {
"next": "next link",
"previous": "next link"
},
"_totalCount": "100"
}
这是一个好的做法吗?
答案 0 :(得分:4)
顺便提一下,你有一个适当的HAL RFC的例子
https://tools.ietf.org/html/draft-kelly-json-hal-06#section-6
"_links": {
"self": { "href": "/orders" },
"next": { "href": "/orders?page=2" },
"find": { "href": "/orders{?id}", "templated": true }
}
我不确定是关于“_totalCount”...我也在找出以HAL格式输入totalCount属性的最佳方法
答案 1 :(得分:2)
使用rel =“next”和rel =“previous”的链接
答案 2 :(得分:1)
DIR
可能会有问题。它返回的资源的固有属性是什么?很可能不是。
如果你拥有它,那么你将被迫每次为资源的每个页面提供的值。如果总集合非常大,则有必要将计数存储在某个地方以满足API。在许多情况下,计数可能更难获得。例如,如果您基于提供延续令牌的其他服务实施,则填充_totalcount
将变得困难。如果你有SQL表,它可能相当容易获得,但也需要付出代价。
它对客户端或UI真的有价值吗?如果可能,我会避免。