我正在使用Webapi来获取数据。 API将结果限制为100。在这种情况下,结果为2481,但是由于这个限制,如果不使用OData函数,我将无法获得所有需要的记录。有人告诉我要使用跳过功能,但是有关此文档的资料对于以前从未使用过的人不是很有帮助。
我的电话如下:
cmake_minimum_required(VERSION 3.5)
project(ncurses)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_BUILD_TYPE Debug)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pedantic -Wextra")
find_package(Curses REQUIRED)
add_executable(ncurses main.cpp)
target_link_libraries(ncurses ${CURSES_LIBRARIES})
下面是返回的第一个结果的摘要:
https://accounting.sageone.co.za/api/2.0.0/TaxInvoice/get?apikey={xxxxxxxxxx}&companyid=12345&includeDetail=true&$orderby=Created%20desc
我需要执行以下操作:返回所有记录,其中特定字段(“创建的”)包含当前年份,即使结果超过100。我假设需要使用$ search和skip函数,但是我不确定语法。
谢谢, 史蒂文
答案 0 :(得分:0)
根据文档here,您应该将skip参数附加到URL中。
类似的东西:
https://accounting.sageone.co.za/api/2.0.0/TaxInvoice/get?apikey={xxxxxxxxxx}&companyid=12345&includeDetail=true&$skip=100&$orderby=Created%20desc
提供的示例是:
https://services.odata.org/OData/OData.svc/Products?$skip=2&$top=2&$orderby=Rating
您可能需要摆弄一些东西,但这似乎是方法。
答案 1 :(得分:0)
要返回所有记录,其中特定字段(“已创建”)包含当前年份,则需要在URL后面附加以下过滤条件。您可以看到其他受支持的OData Date函数here。
&$filter=year(Created) eq 2018
OData处理可能返回大量数据的服务的分页。由于API限制为100(表示数据的页面大小),因此每个服务调用最多可获得100条记录。要使记录从101条增加到200条,您需要通过在网址后附加$skip=100
来跳过前100条记录。另外,如果您需要从201到300提取记录,则将$ skip = 200附加到URL上,依此类推,直到获得2481条记录。这意味着您需要通过增加$skip
的值来调用服务25次。
因此,通过附加的过滤器和跳过查询,您需要将以下查询字符串附加到现有的网址上
&$filter=year(Created) eq 2018&$skip=100
此外,如果您希望每次服务调用获取的记录少于100条,则需要使用$top
查询。假设您的应用程序中页面大小为50,则将$top=50
附加到查询字符串中。