使用SharePoint API列出文件夹/文件时返回空列表的问题排查
问题背景
我在SharePoint中创建了名为import的文件夹,包含:
- 空文件夹
testdir - 两个空文件
test1.csv和test2.csv
API查询异常
调用REST API查询时,返回有效响应但数据列表为空("value":[]):
查询子文件夹
请求链接:
https://mycomp.sharepoint.com/sites/mysite/_api/Web/GetFolderByServerRelativeUrl('/sites/mysite/mypath/import')/Folders
响应内容:
{"odata.metadata":"https://mycomp.sharepoint.com/sites/mysite/_api/$metadata#SP.ApiData.Folders1","value":[]}
查询文件
请求链接:
https://mycomp.sharepoint.com/sites/mysite/_api/Web/GetFolderByServerRelativeUrl('/sites/mysite/mypath/import')/Files
响应内容:
{"odata.metadata":"https://mycomp.sharepoint.com/sites/mysite/_api/$metadata#SP.ApiData.Files12","value":[]}
疑问:
- 为何看不到
testdir和两个csv文件? - API与Web界面权限是否可能不一致(比如API无目录列表权限)?
更新1:查询子文件夹内文件报错
在testdir中创建空文件后,调用以下API:
请求链接:
https://mycomp.sharepoint.com/sites/mysite/_api/Web/GetFolderByServerRelativeUrl('/sites/mysite/mypath/import/testdir')/Files
错误响应:
{"odata.error":{"code":"-2147024894, System.IO.FileNotFoundException","message":{"lang":"fr-FR","value":"Fichier introuvable."}}}
疑问:
- 新建的文件夹/文件是否存在查询延迟?
- SharePoint是否需要提交操作才能让API识别?
更新2:使用$expand参数后的结果
添加?$expand=Folders,Files参数查询后,响应中Folders和Files字段仍为空数组;将URL中的空格替换为%20后结果一致。
可能的原因及解决方案
1. 权限验证问题
REST API使用的凭证权限不足是常见原因。检查API调用的身份验证方式(如OAuth、应用权限),确保账号拥有目标文件夹的读取权限,同时具备查看列表项、浏览用户信息等必要权限。可以尝试用Web界面的同一账号调用API,验证权限是否一致。
2. Server Relative URL格式问题
确认GetFolderByServerRelativeUrl中的路径是否正确:
- 尝试去掉路径两端的单引号,直接传入路径:
https://mycomp.sharepoint.com/sites/mysite/_api/Web/GetFolderByServerRelativeUrl(/sites/mysite/mypath/import)/Folders - 若路径包含特殊字符,需进行URL编码(比如空格替换为
%20)。
3. 空资源的API查询限制
SharePoint REST API默认可能不会返回空文件夹,尝试添加$select参数指定返回字段:
https://mycomp.sharepoint.com/sites/mysite/_api/Web/GetFolderByServerRelativeUrl('/sites/mysite/mypath/import')/Folders?$select=Name,ServerRelativeUrl
空文件需确认是否完全保存,SharePoint同步延迟通常不超过几分钟,若长时间无结果可重新创建文件测试。
4. 换用GetFolderById端点
先通过/sites/mysite/_api/Web/Folders获取目标文件夹的ID,再用ID查询:
https://mycomp.sharepoint.com/sites/mysite/_api/Web/GetFolderById('{folder-id}')/Folders
这种方式可避免路径格式问题。
5. 区域设置影响
错误信息为法语,尝试在请求头中添加Accept-Language: zh-CN(或站点对应语言代码),确保API响应与站点区域设置一致。
内容的提问来源于stack exchange,提问作者Tristan
相关产品推荐
相关产品推荐

