如何在DelphiREST组件中使用分页

如何在DelphiREST组件中使用分页,rest,delphi,pagination,Rest,Delphi,Pagination,在Delphi西雅图,我使用Delphi Rest组件通过Rest服务检索数据。我的数据提供程序似乎将结果一次限制为1000行,这意味着我需要使用分页。我知道在REST数据流中返回了分页URL。所以有几个问题 (1) Delphi组件是否支持GetNextPage(或类似的东西?)。如果是这样,我就找不到了 (2) 如何检索URL以获取下一页?然后是否更新TRESTRequest资源属性并再次执行 (3) 。我正在使用RestResponseDataSetAdapter访问此数据(通过DataS

在Delphi西雅图,我使用Delphi Rest组件通过Rest服务检索数据。我的数据提供程序似乎将结果一次限制为1000行,这意味着我需要使用分页。我知道在REST数据流中返回了分页URL。所以有几个问题

(1) Delphi组件是否支持GetNextPage(或类似的东西?)。如果是这样,我就找不到了

(2) 如何检索URL以获取下一页?然后是否更新TRESTRequest资源属性并再次执行

(3) 。我正在使用RestResponseDataSetAdapter访问此数据(通过DataSource和ClientDataSet)。我假设没有办法“组合”来自多个REST调用的数据结果。例如,如果我通过第一次调用检索1000行,通过第二次调用检索300行,是否无法同时访问所有1300行


我查看了Google和REST文档,没有发现任何有用的东西。感谢您的帮助。

实现分页没有单一的标准方法,因为不同的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包装器时,第一步都是建立一个标准的通信层,该层实现在该特定服务上所有可用请求之间通用的任何东西。在这里,我将添加分页选项,根据服务的设计方式工作

请一次只问一个问题。分页的实现方式完全不同,具体取决于所连接的服务器。这些组件不可能涵盖所有可能的场景。您只需遵循此服务提供的规则,并以您需要的方式在每个请求中实现它们。我从来没有使用过两个彼此遵循相同规则的REST服务器。这很公平。我确实解决了我的问题。问题是服务将停止发送1000行的数据。随后,REST认为已经完成了,但我的数据流中没有任何内容。。。