在 SharePoint REST 请求中使用 OData 查询操作
SharePoint REST 服务支持多种 OData 查询字符串运算符,使用这些运算符,您可以选择、筛选及订购您请求的数据。
提示
SharePoint Online(和本地 SharePoint 2016 及更高版本)REST 服务支持使用 OData $batch
查询选项,将多个请求合并到一个服务调用中。 有关详细信息和代码示例链接,请参阅使用 REST API 发出批处理请求。
选择要返回的字段
使用 $select 查询选项指定对于给定列表、列表项或实体集表示的其他 SharePoint 对象将返回哪些字段。 可以使用 $select=*
返回所有可用字段。
注意
通常,如果未指定 $select
查询选项,REST 服务默认返回所有可用字段。 但是,在少数几种情况下,某些 SharePoint 对象包含检索资源极为密集的属性;为了优化 REST 服务性能,默认查询中并不包含这些属性,必须显式请求。例如,不会默认返回 SPWeb.EffectiveBasePermissions 属性,必须使用 $select
查询选项进行显式请求。
还可指定请求返回其他列表中的投影字段和查找值。 为此,请同时在 $select
和 $expand
查询选项中指定字段名称。 例如:
GET https://{site_url}/_api/web/lists('{list_guid}')/items?$select=Title,Products/Name&$expand=Products/Name
Authorization: "Bearer " + accessToken
Accept: "application/json;odata=verbose"
不支持批量扩展和选择相关项。
选择要返回的项
使用 $filter 查询选项来选择要返回的项。 SharePoint REST 服务支持的 OData 查询运算符列出了可用于 SharePoint REST 服务的筛选器查询比较选项和函数。
单个值查阅字段的查询
单个值循环字段由 SharePoint REST 服务中两个单独的字段表示:一个字段表示实际字段值,另一个表示字段名称。 可以像对该数据类型的任何其他字段一样,对查找字段值执行查询。 例如,如果查询字段值为字符串,则可以在查询中使用字符串比较选项。
用户查询
在 SharePoint REST 服务中,用户用用户的友好(显示)名称,而非其别名或域\别名组合表示。 因此,您必须阵对用户的友好名称构造用户查询。
注意
不支持基于成员身份的用户查询。 不支持通过当前用户的 ID 使用 Current 运算符执行查询。
多值查阅字段和用户的查询
由于多值查阅字段作为多值字符串返回,因此无法对其进行查询(例如,不支持 Includes 元素或 NotIncludes 元素的等效值)。
对返回的项排序
使用 $orderby 查询选项可指定查询返回集中项的排序方式。 若要按多个字段排序,请指定一个以逗号分隔的字段列表。 也可通过向查询附加 asc 或 desc 关键字来指定按升序还是降序对项进行排序。
对返回的项进行分页
使用 $top 和 $skiptoken 查询选项可选择通过其他方式由查询返回的项的子集。
注意
$skip 查询选项不适用于查询 SharePoint 列表项。
通过 $top
选项,可选择要返回的返回集的前 n 个项。 例如,以下 URI 请求仅实际返回预期返回集中的前十个项:
GET https://{site_url}/_api/web/lists('{list_guid}')/items?$top=10`
Authorization: "Bearer " + accessToken
Accept: "application/json;odata=verbose"
通过 $skiptoken
查询选项,可以跳过某些项,直至到达指定项,然后返回剩余的项。
GET https://{site_url}/_api/web/lists('{list_guid}')/items?$skiptoken=Paged=TRUE%26p_ID=5`
Authorization: "Bearer " + accessToken
Accept: "application/json;odata=verbose"
注意
使用这些查询选项时,需考虑在 OData 中按顺序分页。 例如,假设要实现“下一页”按钮以显示 SharePoint 列表项。 使用 REST 服务,使单击按钮时返回项 1 至项 20,然后返回项 21 到项 40,以此类推。 但是,假设另一个用户在多次单击“下一页”按钮之间删除项 4 和项 18。 在这种情况下,将重置剩余项的序号位置,实际上显示项 21 到项 40 将跳过两项。
SharePoint REST 服务支持的 OData 查询运算符
支持 | 不支持 |
---|---|
数字比较 (lt le gt ge eq ne) | 算术运算符 (add、sub、mul、div、mod) 基本数学函数(round、floor、ceiling) |
字符串比较 startswith( {Col to query},'{string to check}' ) substringof( '{string to check}', {Col to query} ) eq ne |
endswith、replace、substring、tolower、toupper、trim、concat |
日期和时间函数 day()、month()、year()、hour()、minute()、second() | DateTimeRangesOverlap 运算符 关于日期时间是否属于周期性日期时间模式的查询 |
下图显示支持的 OData 查询选项。