在Delphi Seattle中,我使用Delphi Rest组件通过REST服务检索数据。我的数据提供者似乎一次将结果限制为1000行,这意味着我需要使用分页。我知道在REST数据流中返回了一个分页URL。所以有几个问题......
(1)Delphi组件是否支持GetNextPage(或类似的东西?)。如果是这样,我找不到它。
(2)如何检索URL以获取下一页?然后我是否再次更新TRESTRequest资源属性并执行EXECUTE?
(3)。我正在使用RestResponseDataSetAdapter来访问此数据(通过DataSource和ClientDataSet)。我假设没有办法“组合”来自多个REST调用的数据结果。例如,如果我通过第一次调用检索1,000行,通过第二次调用检索300行,则无法同时访问所有1300行?
我查看了Google以及REST文档,但没有找到任何有用的信息。任何帮助表示赞赏。
答案 0 :(得分:0)
没有单一的标准方法来实现分页,因为不同的Web / REST服务器以自己的方式实现分页。这些组件几乎不可能有内置的分页选项,涵盖任何可能的场景。
无论您使用何种服务,都应该为您提供有关如何实施分页的详细信息。通常,这是查询字符串的一部分。例如......
http://someserver.com/someresource?pageSize=100&page=1
......或者有时可能在资源中......
http://someserver.com/someresource/1/
...或有时在HTTP标头中......
Page-Size: 100
Page: 1
我还看到一些服务器在其响应中提供了一个URL,已预先定义并准备好用于导航到下一页结果...
{
"next_page": "http://someserver.com/someresource?pageSize=100&page=3",
"prev_page": "http://someserver.com/someresource?pageSize=100&page=1"
}
但同样,每台服务器都不同。我从来没有见过任何两个遵循完全相同规则的REST服务器。
您只需按照此服务的指示阅读规则,并根据需要在每个请求中实施您的分页。
话虽这么说,每当我编写任何类型的API包装器时,第一步是建立一个标准的通信层,它实现了在该特定服务上可用的所有请求中通用的任何内容。在这里,我会根据服务的设计方式添加分页选项。