sharepoint-2013 - 使用 Sharepoint REST API 查找文件列表
问题描述
这似乎是一个冷漠的问题,我无法在包括这里在内的任何地方找到答案,所以我将再次尝试看看是否有人有解决方案。我有一个 SharePoint 2013 实例,我使用 REST API 进行内容搜索并返回到我的 React 前端进行显示。这很好用。但是,当我只需要在整个站点中搜索特定文档的列表而不仅仅是在目录或特定列表中时,我现在遇到了问题。我可以使用 /_api/search/query?queryText="" 进行内容搜索就好了,但我想构造这个 API 端点的查询文本,只在我提供的列表中搜索文档。
例如,如果我要查找三个文档:
- Foo.txt
- 酒吧.doc
- Foobar.pdf
我只想要这些文档和相应的数据(例如我使用搜索 api 获得的 RedirectEmbedURL 等)而不是 /_api/web/lists/getByTitle 方法。
有没有办法格式化查询字符串以仅返回特定文件?
谢谢。
解决方案
要检索列表,您需要知道站点路径和库名称。
您还需要操作员使用过滤器
检索列表中的所有文件: https:////_api/Web/Lists/GetByTitle('')/Items?$expand=File
例子:
https://domain-example.com/sites/site1/site2/etc/_api/Web/Lists/GetByTitle('listtitle')/Items?$expand=File
以下是过滤器的一些示例:
要按名称过滤,您需要展开“FieldValuesAsText”并按属性“FileLeafRef”过滤 这里的示例:
https://[site]/web/Lists/GetByTitle('[library_name]')/Items?$filter=substringof('[TEXT_TO_SEARCH]',Title) or substringof('[TEXT_TO_SEARCH]',FileLeafRef)&$expand=File,FieldValuesAsText
我也按标题过滤,因为我不知道用户是否需要标题或带有扩展名的名称。
过滤器 StartsWith:
https://domain-example.com/sites/site1/site2/etc/_api/Web/Lists/GetByTitle('listtitle')/Items?$expand=File&$filter=startswith(Title,'Foo')
过滤“包含”(substringof)
https://domain-example.com/sites/site1/site2/etc/_api/Web/Lists/GetByTitle('listtitle')/Items?$expand=File&$filter=substringof('T15', Title)
过滤“使用相关键搜索(在本例中为 ex1)”:(substringof)
https://domain-example.com/sites/site1/site2/etc/_api/Web/lists/GetByTitle('listtitle')/Items?$expand=FieldValuesAsText&$filter=substringof('BES10GHC10BB001', ex1)
谢谢阅读!
推荐阅读
- laravel - Nginx 和 Laravel:如何将“位置”块限制为从“/”到“/api”?
- python-3.x - 执行graphviz时调用异常
- javascript - 如何始终在段落末尾放置阅读更多 - 阅读更少按钮?
- ios - UITextView 中的 AttributedString 在顶部被修剪
- python - If.. else:有没有更好的方法来处理这个问题?
- macos - JXA:删除文件夹,创建新文件夹,将匹配的文件移动到新文件夹中
- javascript - 使用 window.open() 打开新选项卡,但 URL 重定向到另一个页面并丢失句柄
- google-app-engine - 谷歌云平台 DNS_PROBE_FINISHED_NXDOMAIN 使用第三方域
- reactjs - Chartjs 没有呈现条形图,即使在控制台记录时图表变量正确显示
- laravel - 验证日期不在日期范围数组之间