使用Sharepoint REST API查找文件列表

7
这似乎是一个我无法在任何地方找到答案的问题,包括这里,因此我想再试一次,看看是否有人有解决方案。我的SharePoint 2013实例使用REST API进行内容搜索,并返回给我的React前端进行显示。这很好用。但是,现在我遇到了一个问题,当我需要仅在整个站点中搜索特定文档列表时而不仅仅是在目录或特定列表中进行搜索时。我可以使用 /_api/search/query?queryText="" 进行内容搜索,但我想构建此API端点的查询文本以仅搜索我提供的列表中的文档。
例如,如果我正在寻找三个文档:
1. Foo.txt 2. Bar.doc 3. Foobar.pdf
我只想要这些文档及其相应的数据(如使用搜索API获取的 RedirectEmbedURL 等),而不是使用 /_api/web/lists/getByTitle 方法。
有没有一种方法来格式化查询字符串以仅返回特定的文件?
谢谢。
2个回答

7
要检索列表,您需要知道站点路径和库名称。
同时,您需要操作员来处理过滤器。 操作员 检索列表中的所有文件:
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

我也按标题过滤,因为我不知道用户需要带扩展名的名称还是不带扩展名的标题。
以开头为过滤器:
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)

感谢阅读!


这是我最终想出来的仅搜索标题的方法:https://[sharepoint site]/_api/search/query?querytext='*'&rowlimit=10&refinementfilters='Title:or("40c91e71-d3b6-4b23-b034-50f6dca76649"%2c"eb5d0a99-d619-411d-9b0e-abcd5430d7da")'&clienttype='ContentSearchRegular'现在,我正在添加所需的选择属性以获取所需的数据。我之前卡在了细化筛选器上,试图使用它们来获取标题。 - john
@john 我想通过“名称”关键字在站点内的库中查找文件,但我不知道该怎么做。我已经尝试过以下方法:“https://[sharepoint site]/_api/web/Lists/GetByTitle([LIBNAME]')/Items?$expand=File&$filter=substringof('filename.doc', File/Name)”,但是我收到了列“File”不存在的错误消息。 :( - Alberto
@john 找到了,正在更新答案。 - Alberto

2
我只是使用以下内容:
https://<domain>/sites/<list-title>/_api/files

这包括Url、名称和“childrenCount”以过滤文件夹。

您可以在请求中使用逻辑来进行过滤。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接