为了只知道类别中的帖子数量,其端点直接返回该数字,例如:
curl http://wired.com/wp-json/wp/v2/categories/24
在返回的资源中
count
字段显示:486
如果您请求该类别中的帖子,而不是该类别本身,那么元数据显示的帖子总数与此相同:
curl -I http://wired.com/wp-json/wp/v2/posts?categories=24
您可以读取标题
X-WP-Total: 486
.
WordPress的REST API遵循当前API使用的最佳实践,其中包括在标头中返回有关请求的元数据,以及在可能的情况下遍历集合的链接。
不需要等待长度===0的帖子数组,就可以知道没有更多的帖子页面。
实际上,rest API返回的是标题、关于页面数量的元数据以及可用于同一端点/过滤器的帖子总数。
例如,以wired的API为例。com:
curl -I http://wired.com/wp-json/wp/v2/posts/
它返回与此问题相关的三个标题:
Link: <http://www.wired.com/wp-json/wp/v2/posts?page=2>; rel="next"
X-WP-TotalPages: 18067
X-WP-Total: 180664
如您所见,结果足够一致,可以知道您是否需要检索更多帖子,或者您已经到达列表的末尾。您有X-WP-Total显示此端点的资源总数,X-WP-TotalPages显示具有相同帖子数的页面数(默认值为10,但您可以使用query参数请求更多内容
per_page
).
而且链接头为您提供了更多的信息,您可以使用这些信息进行遍历,而无需在请求更多之前存储帖子的总数。
例如:$ curl -I http://www.wired.com/wp-json/wp/v2/posts?page=18067
提供此链接标题:
Link: <http://www.wired.com/wp-json/wp/v2/posts?page=18066>; rel="prev"
(否
next
链接,就像第一页没有
prev
链接)。
和中间页:$ curl -I http://www.wired.com/wp-json/wp/v2/posts?page=2
为您提供下一个和上一个链接:
Link: <http://www.wired.com/wp-json/wp/v2/posts?page=1>; rel="prev", <http://www.wired.com/wp-json/wp/v2/posts?page=3>; rel="next"
我怀疑REST API可以返回的帖子数量更多地与服务器功能相关,因为我能够返回
per_page=100
没有任何麻烦。