分页集合¶
为了减轻服务的负载,列表操作一次返回的最大项目数量有限。返回的最大项目数量由计算提供程序确定。要导航集合,可以在 URI 中设置 limit 和 marker 参数。例如
?limit=100&marker=1234
marker 参数是前一个列表中最后一个项目的 ID。默认情况下,服务按创建时间降序排列项目。当服务无法识别创建时间时,它按 ID 排序项目。limit 参数设置页面大小。这两个参数都是可选的。如果客户端请求的 limit 超出了部署所支持的范围,可能会抛出 overLimit (413) 错误。带有无效 ID 的 marker 将返回 badRequest (400) 错误。
为了方便起见,集合应包含 atom next 链接。它们还可以选择性地包含 previous 链接,但当前实现不包含 previous 链接。列表中的最后一页不包含指向“next”页面的链接。以下示例说明了服务器集合中的三个页面。第一页是通过向 http://servers.api.openstack.org/v2.1/servers?limit=1 发送 GET 请求检索到的。在这些示例中,``limit`` 参数将页面大小设置为单个项目。后续链接遵循初始页面大小。因此,客户端可以跟随链接来遍历分页集合,而无需输入 marker 参数。
示例:服务器集合:JSON(第一页)
{
"servers_links":[
{
"href":"https://servers.api.openstack.org/v2.1/servers?limit=1&marker=fc45ace4-3398-447b-8ef9-72a22086d775",
"rel":"next"
}
],
"servers":[
{
"id":"fc55acf4-3398-447b-8ef9-72a42086d775",
"links":[
{
"href":"https://servers.api.openstack.org/v2.1/servers/fc45ace4-3398-447b-8ef9-72a22086d775",
"rel":"self"
},
{
"href":"https://servers.api.openstack.org/v2.1/servers/fc45ace4-3398-447b-8ef9-72a22086d775",
"rel":"bookmark"
}
],
"name":"elasticsearch-0"
}
]
}
在 JSON 中,分页集合中的成员存储在一个以集合命名的 JSON 数组中。在某些情况下,可以使用 JSON 对象来保存成员,尤其是在使用关联数组更实用时。关于集合本身的属性,包括链接,包含在一个名为实体名称下划线 (_) 和 links 的数组中。以集合名称和下划线开头的对象和数组的组合表示 JSON 中的集合。这种方法允许通过允许它们与任意属性关联来扩展分页集合。