如何通过Microsoft Graph API获取SharePoint列表的全部条目?解决单次请求仅返回200条数据的问题
嘿,这个情况我太熟悉了!Microsoft Graph API 对 SharePoint 列表项的单次请求确实有默认返回限制(默认就是200条),这就是你只拿到200条数据的原因。这里给你两种实用的解决思路:
1. 利用自动分页的@odata.nextLink
每次请求返回的响应体里,只要还有未返回的数据,就会包含一个@odata.nextLink字段,这个字段的值就是下一页数据的请求URL。你只需要循环请求这个URL,直到响应里不再出现@odata.nextLink,就说明所有数据都已经获取完毕了。
举个伪代码示例(Python):
import requests # 替换成你的实际参数和令牌 base_url = "https://graph.microsoft.com/v1.0/sites/{site_id}/lists/{list_id}/items?expand=fields" auth_headers = {"Authorization": "Bearer YOUR_ACCESS_TOKEN"} all_list_items = [] current_url = base_url while current_url: response = requests.get(current_url, headers=auth_headers) response.raise_for_status() # 处理请求错误 response_data = response.json() # 将当前页的条目加入总列表 all_list_items.extend(response_data.get("value", [])) # 获取下一页的请求地址 current_url = response_data.get("@odata.nextLink") print(f"成功获取全部 {len(all_list_items)} 条列表项")
2. 自定义每页返回数量($top参数)
如果你想减少请求次数,可以用$top参数指定每页返回的最大条目数,SharePoint列表项接口支持的最大$top值是500。比如:
https://graph.microsoft.com/v1.0/sites/{site_id}/lists/{list_id}/items?expand=fields&$top=500
这样单次请求就能拿到最多500条数据,对于你250条的列表来说,一次请求就够了。但如果之后列表数据超过500条,还是要结合上面的@odata.nextLink循环请求。
需要注意的是,不管用哪种方式,都要确保你的访问令牌有足够的权限(至少是Sites.Read.All或者对应的站点/列表权限),不然可能会出现权限不足的问题。
内容的提问来源于stack exchange,提问作者jan-seins
相关产品推荐
相关产品推荐

