我正在尝试通过一个API调用获取所有文件夹和文件。我正在$expand
为此
/sites/_api/Web/GetFolderByServerRelativeUrl('MyDocuments')?$expand= "Folders/ListItemAllFields,Files/ListItemAllFields,Folders/Files/ListItemAllFields,Folders/Folders/ListItemAllFields,Folders/Folders/Files/ListItemAllFields"
这是按预期的方式工作。但是随着响应,我几乎没有系统文件夹,例如Forms
我尝试了这种方法https://sharepoint.stackexchange.com/questions/138135/get-all-files-and-folders-in-one-call?noredirect=1&lq=1所以我$filter
在请求中添加了:。
/sites/_api/Web/GetFolderByServerRelativeUrl('MyDocuments')?$expand="Folders/ListItemAllFields,Files/ListItemAllFields,Folders/Files/ListItemAllFields,Folders/Folders/ListItemAllFields,Folders/Folders/Files/ListItemAllFields"?$filter="Folder/Name ne 'Attachments' and Folder/Name ne 'Item' and Folder/Name ne 'Forms'"
但看起来过滤器根本不影响响应。有什么办法可以在一个请求中使用扩展和过滤器?如何过滤响应以删除系统文件夹?
实际上,过滤器表达式是有效的,但在这种情况下将被忽略。
/sites/_api/Web/GetFolderByServerRelativeUrl('MyDocuments')?$filter=<expr>
^^^^^^^^^^^^^^
$filter expression could not be applied per item resource
(GetFolderByServerRelativeUrl function returns a Folder resource here)
$filter
仅每个资源集合支持查询选项。
相反,我建议利用以下ListItemCollection
资源端点:
url: /_api/web/lists/getbytitle('<title>')/items
method: GET
它返回项目的集合(ListItem
资源类型)。使用$expand
查询选项,所有文件以及文件夹将包含在结果中:
/_api/web/lists/getbytitle('<title>')/items?$expand=Folder,File
注意:结果中将不包含任何系统文件和文件夹
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句