SharePoint REST API GetFolderByServerRelativeUrl返回404求助
排查建议
1. 修正请求头传递方式(核心错误)
你的代码错误地将请求头放在了get方法的第二个参数(这是查询参数),而非withHeaders方法中。正确写法:
$folderUrl = '/sites/TeamraumWorkplaceSolutions/Freigegebene Dokumente'; // 编码路径中的特殊字符(如空格) $encodedFolderUrl = rawurlencode($folderUrl); $url = "$this->hServer/_api/web/GetFolderByServerRelativeUrl('$encodedFolderUrl')/files"; $response = Http::withHeaders([ 'Authorization' => "Bearer " . Session::get('sharepoint_auth_code'), 'Accept' => 'application/json;odata=verbose', ])->get($url); dd($response->getStatusCode(), $response->getBody(), $response);
2. 确认文件夹的真实服务器相对路径
直接在目标文件夹页面获取准确路径:
- 打开浏览器F12开发者工具,切换到控制台,执行以下JS代码:
console.log(_spPageContextInfo.webServerRelativeUrl + '/' + _spPageContextInfo.listAttributes["RootFolder"]); - 复制控制台输出的路径,这就是该文件夹的服务器相对路径,直接用于
GetFolderByServerRelativeUrl参数(记得编码)。
3. 测试URL有效性
在浏览器中直接访问构造好的API URL(需已登录SharePoint),比如:
https://xyz.sharepoint.com/sites/TeamraumWorkplaceSolutions/_api/web/GetFolderByServerRelativeUrl('/sites/TeamraumWorkplaceSolutions/Freigegebene%20Dokumente')/files
- 如果浏览器返回JSON数据,说明URL正确,问题出在代码实现;
- 如果浏览器仍返回404,说明路径错误,重新确认文件夹的服务器相对路径。
4. 排除无效路径尝试
你的尝试中,Shared Documents(第3、4种)是英文默认文档库名称,而目标文件夹是德语的Freigegebene Dokumente,直接排除这两种情况。
内容的提问来源于stack exchange,提问作者K.G.
相关产品推荐
相关产品推荐

