求助:获取SharePoint视图项目数量API报错,求Postman可用请求示例
问题根源
你之前的API请求错误是因为视图(List View)是属于列表(List)的资源,而非文件夹(Folder),调用GetFolderByServerRelativeUrl后访问Views集合自然会返回资源找不到的错误。
Postman可用API请求方案
方案1:直接获取视图的ItemCount属性(简单但需注意阈值)
如果目标视图是索引视图(避免列表超过5000项时的阈值错误),可以直接请求视图的ItemCount属性:
请求信息
- 请求方法:GET
- URL:
https://[SHAREPOINT]/sites/TestSJTemp/_api/web/lists/getbytitle('EXP2')/Views/getbyid('aef46c6f-4901-4e3e-876f-6b55549b945d')?$select=ItemCount
- 请求头:
Accept: application/json;odata=verbose
说明
- 用视图ID比标题更可靠,避免名称空格/特殊字符编码问题
- 如果列表超过5000项且视图未做索引,会返回阈值错误,此时改用方案2
方案2:通过视图查询发起计数请求(适合大列表)
先获取视图的查询规则,再用该规则执行计数查询,不受列表阈值限制(只要查询符合索引要求):
步骤1:获取目标视图的ViewQuery
- 请求方法:GET
- URL:
https://[SHAREPOINT]/sites/TestSJTemp/_api/web/lists/getbytitle('EXP2')/Views/getbyid('aef46c6f-4901-4e3e-876f-6b55549b945d')?$select=ViewQuery
- 请求头:
Accept: application/json;odata=verbose - 从响应中提取
ViewQuery字段的内容(示例格式:<Where><Eq><FieldRef Name='Status'/><Value Type='Text'>Active</Value></Eq></Where>)
步骤2:发起计数请求
- 请求方法:POST
- URL:
https://[SHAREPOINT]/sites/TestSJTemp/_api/web/lists/getbytitle('EXP2')/getitems?$inlinecount=allpages
- 请求头:
Accept: application/json;odata=verboseContent-Type: application/json;odata=verbose
- 请求体(JSON):
{ "query": { "ViewXml": "<View><Query>[替换为步骤1获取的ViewQuery内容]</Query><RowLimit>0</RowLimit></View>" }, "RowLimit": 0 }
- 响应中的
d.__count字段即为视图对应的项目总数量
说明
- 该方法适合超大型列表(4万+项),只要视图的查询条件基于索引字段,就不会触发阈值错误
- 确保
ViewXml格式正确,不要遗漏<View>和<Query>标签
关键注意事项
- 替换URL中的
[SHAREPOINT]为你的实际SharePoint域名 - 确认列表标题为
EXP2(从你提供的页面URL可验证) - Postman中需配置对应身份验证:根据SharePoint环境类型,选择OAuth2或NTLM身份验证
内容的提问来源于stack exchange,提问作者user3803807
相关产品推荐
相关产品推荐

