这似乎是一个超然的问题,我无法在这里找到任何地方,因此,我将再次尝试查看某人是否有解决方案。我有一个SharePoint 2013实例,该实例使用REST API进行内容搜索并返回到我的React前端进行显示。这很好。但是,当我只需要搜索整个站点中特定文档的列表而不仅仅是目录或特定列表时,就会遇到问题。我可以使用/ _api / search / query?queryText =“”进行内容搜索,但是我想构造此API端点的querytext以仅在我提供的列表中搜索文档。
例如,如果我要查找三个文档:
我只希望这些文档和相应的数据(例如我使用搜索api获得的RedirectEmbedURL等)而不是/ _api / web / lists / getByTitle方法。
是否可以格式化查询字符串以仅返回特定文件?
谢谢。
答案 0 :(得分:0)
要检索列表,您需要知道站点路径和库名称。
您还需要操作员使用过滤器
检索列表中的所有文件: 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)
感谢阅读!
答案 1 :(得分:0)
我只使用:
https://<domain>/sites/<list-title>/_api/files
它包含用于过滤文件夹的网址,名称和“ childrenCount”。
您可以在请求中使用逻辑进行过滤。