你调用的API是自己开发的吗?
编辑:刚刚看到您在标签中调用了 WordPress API。 WordPress offers pagination links,并通过自定义标题提供有用的分页信息。
通常,REST API 在通过查询参数(例如:“offset”和“max”)返回资源列表时提供分页支持。 offset 参数指示应跳过多少结果,而 max(或在您的情况下为 pagesize)确定您要获取的最大结果。
例如,http://myapi.com/persons?_offset=0&_max=20 代表您列表中的前 20 人。在 HATEOAS 约束的上下文中,建议提供 HTTP 链接响应标头,以便客户端知道如何使用“上一个”、“第一个”、“下一个”和“最后一个”关系(标准化在RFC 5988)。
例如:
GET /persons?_offset=30&_max=10 HTTP/1.1
Host: myapi.com
Accept: application/json
导致以下响应:
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 934
Link: <http://myapi.com/persons?_offset=0&_max=10>; rel="first"
Link: <http://myapi.com/persons?_offset=20&_max=10>; rel="previous"
Link: <http://myapi.com/persons?_offset=40&_max=10>; rel="next"
{body}
为了保护请求整个列表资源的客户端(即不指定分页参数)的服务器,建议使用以下方法。当客户端请求列表资源(例如http://myapi.com/persons)时,服务器会将客户端重定向到前 X(例如 10)项。
对应的HTTP会话如下图:
GET /persons HTTP/1.1
Host: myapi.com
Accept: application/json
导致以下响应:
HTTP/1.1 303 See Other
Location: http://myapi.com/persons?_offset=0&_max=10
接下来,客户端跟随重定向:
GET /persons?_offset=0&_max=10 HTTP/1.1
Host: myapi.com
Accept: application/json
这会导致以下响应:
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 850
Link: <http://myapi.com/persons?_offset=40&_max=10>; rel="next"
Link: <http://myapi.com/persons?_offset=120&_max=10>; rel="last"
{body}
请注意,但是在需要 CORS (Cross Origin Resource Sharing) 的环境中,重定向可能会导致问题。在这种情况下,通过 GET /persons 检索的部分列表的表示可以简单地指示检索了多少人以及总共有多少人(可选)。
如果您的 API 提供此类导航链接,最好使用它们并使用 Invoke-RESTMethod 实现一个循环并为您的搜索动态构建索引,而不是一次获取 10000 个结果,这会给您带来不必要的压力服务器。但是在不了解您的用例的情况下,很难给您适当的建议。