SharePoint REST API中RenderListDataAsStream如何实现startswith等过滤及单列搜索
一、指定单列搜索实现方式
你当前用的GET请求加InplaceSearchQuery参数默认全列检索,要指定单列检索优先用POST请求调用接口,在请求体中传入ViewXml参数自定义CAML查询,精准锁定检索列:
- 请求方法调整为
POST,接口地址保持/_api/web/GetList('TestList')/RenderListDataAsStream - 请求头必填参数:
Accept: application/json;odata=nometadataContent-Type: application/json;odata=nometadataX-RequestDigest: [你当前会话的请求摘要值]
- 请求体示例,比如指定
Title列包含关键词item 1:
{ "parameters": { "ViewXml": "<View><Query><Where><Contains><FieldRef Name='Title'/><Value Type='Text'>item 1</Value></Contains></Where></Query></View>" } }
注意:
FieldRef的Name属性需要填列的内部名称,不是列表中显示的自定义名称,避免匹配失败。
二、添加startswith、endswith过滤规则
直接修改CAML查询的匹配标签即可实现对应规则:
- startswith开头匹配:将
<Contains>标签替换为<BeginsWith>,示例为匹配Title列以item开头的条目:
<Where> <BeginsWith> <FieldRef Name='Title'/> <Value Type='Text'>item</Value> </BeginsWith> </Where>
- endswith结尾匹配:将
<Contains>标签替换为<EndsWith>,示例为匹配Title列以01结尾的条目:
<Where> <EndsWith> <FieldRef Name='Title'/> <Value Type='Text'>01</Value> </EndsWith> </Where>
三、GET请求场景轻量实现方案
如果只能用GET请求,可直接拼接$filter参数实现需求,参数内容需要做URL编码:
- 指定Title列包含
item 1:/_api/web/GetList('TestList')/RenderListDataAsStream?$filter=substringof('item 1',Title) - 指定Title列以
item开头:/_api/web/GetList('TestList')/RenderListDataAsStream?$filter=startswith(Title,'item') - 指定Title列以
01结尾:/_api/web/GetList('TestList')/RenderListDataAsStream?$filter=endswith(Title,'01')
注意:GET请求的
$filter在列表条目超过5000条时会触发阈值限制,大列表场景优先使用POST传CAML的方案。
内容的提问来源于stack exchange,提问作者xander cage
相关产品推荐
相关产品推荐

